【发布时间】:2015-07-01 00:18:58
【问题描述】:
我曾经假设函数总是被提升到任何 JavaScript 代码块的顶部。
例如,这是有效的:
document.addEventListener('something', dummy);
function dummy(){
console.log('dummy');
}
但这不起作用并在 Firefox 中抛出 ReferenceError,但在 Chrome 中有效:
if(document){
document.addEventListener('something', dummy1);
function dummy1(){
console.log('dummy');
}
}
Fiddle code
最初,我认为 Chrome 在我测试之前也会抛出错误,但不知何故它可以正常工作。谁能解释为什么它在 Firefox 中不起作用?
【问题讨论】:
-
您说得对,通常函数位置并不重要,因为文件在执行之前已完全加载。但在这种情况下,很可能是因为 if 语句有一些影响,内部代码在执行之前可能不会被引用。很可能是范围的事情。反正我觉得语法很丑。
标签: javascript firefox