Javascript 如何使用立即调用的函数表达式,与window.onload有什么区别?
我最近偶然发现了生命,对它们的目的很感兴趣。我知道它们被用来自动调用函数,这样就不需要创建函数并在窗口加载时调用它。但是,如何正确使用它们呢?例如:Javascript 如何使用立即调用的函数表达式,与window.onload有什么区别?,javascript,Javascript,我最近偶然发现了生命,对它们的目的很感兴趣。我知道它们被用来自动调用函数,这样就不需要创建函数并在窗口加载时调用它。但是,如何正确使用它们呢?例如: window.addEventListener("load", function(){ console.log("hello"); }) 做与此相同的事情: ( function(){ console.log("Hello"); }(); ) 那么什么时候应该使用生命?作为补充问题。这两者之间的区别是什么
window.addEventListener("load", function(){
console.log("hello");
})
做与此相同的事情:
(
function(){
console.log("Hello");
}();
)
那么什么时候应该使用生命?作为补充问题。这两者之间的区别是什么?IIFE通常用于创建局部范围,这样就可以在不创建全局变量的情况下使用变量(或者在循环中使用,这样就不会在下一次迭代中覆盖变量)
一个生命马上就要开始了。加载事件触发时(在加载文档及其依赖项之后)会涉及加载处理程序。IIFEs通常用于创建局部范围,以便在不创建全局变量的情况下使用变量(或在循环中使用变量,以便在下一次迭代中不会覆盖变量)
一个生命马上就要开始了。加载事件触发时(在加载文档及其依赖项之后)会涉及加载处理程序。立即调用的函数表达式会立即运行 事件侦听器或事件处理程序很可能不会
var foo=“旧值”;
(功能(){
console.log(“更新值”);
foo=“变量已更新”;
})();
console.log(foo);//“变量已更新”代码>调用的函数表达式立即运行
事件侦听器或事件处理程序很可能不会
var foo=“旧值”;
(功能(){
console.log(“更新值”);
foo=“变量已更新”;
})();
console.log(foo);//“变量已更新”
IIFEs和window.onload
是两个完全不同的东西。它们之间没有任何关系。也许如果你把脚本标记放在正文的底部,它们可能会同时执行,但只是因为我很好奇,你从哪里发现它们的行为是相同的?@4castle只是在浏览器中运行这两个脚本。实际上,你的第二个代码片段是一个语法错误。分号必须放在外圆括号后面。IIFEs和window.onload是两个完全不同的东西。它们之间没有任何关系。也许如果你把脚本标记放在正文的底部,它们可能会同时执行,但只是因为我很好奇,你从哪里发现它们的行为是相同的?@4castle只是在浏览器中运行这两个脚本。实际上,你的第二个代码片段是一个语法错误。分号需要放在外括号后面。