gpt4 book ai didi

javascript - 关闭和功能提升 - 不适用于 Firefox

转载 作者:行者123 更新时间:2023-11-27 22:49:13 25 4
gpt4 key购买 nike

以下代码在 Firefox 浏览器的某些版本上出现错误 - linksHandle 未定义

该代码由一个函数组成,该函数的底部有一个名为 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
}
}
});

最佳答案

Function declarations inside blocks仅自 ES6 起才允许。它们确实在您的 if 主体内提升(不是整个函数),但在旧版本的 FF 中则不然,后者将它们实现为 "function statements"没有被提升(实际上是 completely invalid in strict mode )具有 caused issues like yours .

关于javascript - 关闭和功能提升 - 不适用于 Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38191650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com