1
下面的代码给了一个错误,在某些版本的Firefox浏览器 - linksHandle is not defined
。关闭和功能hoisting-不工作在Firefox
该代码是由在底部有一个名为linksHandle功能的功能的。据我所知,当函数被定义的函数被调用时,该函数应该被挂起。
因此,对于事件“mMenuReady”中定义的功能应该能够访问它,因为它机箱在它的执行上下文中定义的所有功能和变量。
为什么有些版本的Firefox需要的函数声明(linksHandle)进行之前,为了使“mmenu”回调包围函数定义的?
document.addEventListener('readystatechange', function() {
if (document.readyState === 'interactive') {
if (typeof jQuery === 'function') {
// callback function that is invoked later by the event that is triggered -> $(window).trigger("mMenuReady")
$(window).on('mMenuReady', function() {
var links2 = Array.prototype.slice.call(document.querySelectorAll('#mm-mainMenu a'));
links2.forEach(linksHandle);
});
}
function linksHandle(elem) {
// function code
}
}
});
如果代码不是如果块内,并被decalred在功能的时候了。是ES6中的内在功能? 我的问题是if语句对函数的提升有影响吗? – user3021621
是的,函数级函数声明在函数级范围内被挂起。 – Bergi
但是在更高级的ES中,函数也会在if块中挂起? – user3021621