gpt4 book ai didi

javascript - IIFE及参数

转载 作者:行者123 更新时间:2023-11-28 15:27:40 25 4
gpt4 key购买 nike

这是一个代码

(function(x){
// Some code here
})(1);

上面的代码是 IIFE,所以这意味着它只会执行一次。问题:为什么有人需要将参数传递给这个函数(在下面的示例中为 1)?

我可以在函数内部创建变量,如下所示

(function(){
var x = 1;
// Some code here
})();

这个问题不是关于闭包如何工作,而是关于为什么以及何时使用第一个代码模式以及何时使用第二个代码模式。

最佳答案

首先,这可以被认为是一种风格问题。我更愿意

(function (x, y, z) { … })(1, 2, 3);

超过

(function () { var x = 1; var y = 2; var z = 3; … })();

if xyz 是我通常作为参数而不是局部变量传递的内容(所以我在哪里声明它取决于他们持有什么信息)。

但是,对于 jQuery 和其他代码,您基本上可以做的是别名某些名称:

(function (window, undefined) {
// …
})(window);

这段代码做了两件事:

  • 它将全局窗口重命名为本地窗口。在编写代码时,这绝对没有任何影响。但是当代码被缩小时,缩小器可以将 IIFE 的参数重命名为 w - 以及它在函数中的所有用法。这样,window 只需要写出一次,这可能会节省相当多的字节。
  • 它声明参数未定义,但不向其传递任何内容。这会导致名为 undefined 的参数保存值 undefined。如今它不再那么重要了,但是旧版浏览器允许重新定义 undefined 的值,通过这样做,您可以确保没有其他代码会通过覆盖该值来干扰您的代码(其中,当然,这是一件可怕的事情)。

关于javascript - IIFE及参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28518119/

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