mid*_*ido 6 javascript firefox
我曾经认为函数总是被提升到任何JavaScript代码块的顶部.
例如,这有效:
document.addEventListener('something', dummy);
function dummy(){
console.log('dummy');
}
Run Code Online (Sandbox Code Playgroud)
但这不适ReferenceError用于Firefox,但在Chrome中有效:
if(document){
document.addEventListener('something', dummy1);
function dummy1(){
console.log('dummy');
}
}
Run Code Online (Sandbox Code Playgroud)
最初,我认为Chrome在我测试之前也会抛出错误,但不知怎的,它可以正常工作.有人可以解释为什么它在Firefox中不起作用?
看来这个问题已经存在相当长一段时间了 - 这是 2011 年的参考:http://statichtml.com/2011/spidermonkey-function-hoisting.html
显然,Firefox 会很乐意将函数声明提升到块之外,但不会在块内这样做。链接文章的作者认为这(虽然出乎意料)符合ECMA-262 规范,该规范只允许块内的语句......因为函数声明不是语句。然而,我会注意到,Firefox 很乐意允许在块内声明函数 - 它只是拒绝提升它们。
| 归档时间: |
|
| 查看次数: |
494 次 |
| 最近记录: |