Javascript 访问自执行函数中的同级函数
我觉得我犯了一个很简单的错误。本质上,我只是试图从一个自执行函数中的另一个函数访问一个函数。有什么理由不调用printConfirmation吗?似乎EventHandler也不能正常工作Javascript 访问自执行函数中的同级函数,javascript,function,Javascript,Function,我觉得我犯了一个很简单的错误。本质上,我只是试图从一个自执行函数中的另一个函数访问一个函数。有什么理由不调用printConfirmation吗?似乎EventHandler也不能正常工作 (function(){ var targetZone = document.getElementById('target-zone'); var eventHandlers = function(){ targetZone.addEventListener('click', printC
(function(){
var targetZone = document.getElementById('target-zone');
var eventHandlers = function(){
targetZone.addEventListener('click', printConfirmation);
};
var printConfirmation = function(){
targetZone = targetZone.classList;
targetZone.add('clicked');
};
})();
这是一个提升问题,更改为函数声明而不是函数表达式,它将起作用:
(function(){
var targetZone = document.getElementById('target-zone');
function eventHandlers(){
targetZone.addEventListener('click', printConfirmation);
}
function printConfirmation(){
targetZone = targetZone.classList;
targetZone.add('clicked');
}
eventHandlers();
})();
编辑:此外,正如Daniel指出的,您需要实际调用eventHandlers,而不是调用eventHandlers。谢谢。如果我像@daniel-a-white指出的那样调用EventHandler并执行它,这仍然是一个提升问题吗?函数表达式的提升方式与函数声明的提升方式不同。可能有一些浏览器允许这样做,但一般来说,您应该只在定义函数表达式之后调用它们。因为您在自执行函数作用域的末尾调用EventHandler,所以它应该同样工作良好,而不会将函数表达式转换为声明,对吗?