繁体   English   中英

Firefox:函数提升错误

[英]Firefox: function hoisting error

我曾经假设函数总是被提升到任何JavaScript代码块的顶部。

例如,这有效:

document.addEventListener('something', dummy);
function dummy(){
    console.log('dummy');
}

但这不起作用,并在Firefox中引发ReferenceError ,但在Chrome中起作用:

if(document){        
    document.addEventListener('something', dummy1);
    function dummy1(){
        console.log('dummy');
    }
}

小提琴代码

最初,我认为Chrome在测试之前也会抛出错误,但是以某种方式可以正常工作。 有人可以解释为什么它在Firefox中不起作用吗?

看来这已经是一个问题了很长时间-这是2011年的参考资料: http : //statichtml.com/2011/spidermonkey-function-hoisting.html

显然,Firefox会很高兴地在一个块的外部声明函数声明,但不会在一个块的内部这样做。 链接文章的作者认为这(虽然出乎意料)符合ECMA-262规范 ,该规范仅允许将语句放在块内...因为函数声明不是语句。 但是,我会注意到Firefox很高兴在块内允许函数声明-它只是拒绝提升它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM