gpt4 book ai didi

javascript - javascript 中闭包和 IIFE 的区别

转载 作者:行者123 更新时间:2023-12-02 20:53:38 25 4
gpt4 key购买 nike

根据闭包概念,它将存储外部词法环境的变量,以供将来执行其内部函数。例如:

function makeYounger(age) {
function b() {
console.log("Original age is :" + age);
}
b();
return(function() {
return age / 2;
});
}
var displayAge = makeYounger(20);
console.log(displayAge());

在上述场景中,Javascript 引擎保留 age 来执行 return 方法中存在的内部函数。

IIFE 来了:

 (function(window) { 
var greeting = "Hello";
var fNameSpace1 = {
name : "Appu",
callName : function() {
console.log(greeting + fNameSpace1.name);
}
};
window.doer = fNameSpace1;
}) (window);

fNameSpace1.callName(); //To execute the inner function

在上述场景中,根据闭包概念,变量 greetingfNameSpace1.name 将被存储以供将来执行 callname() > 功能。相反,我们使用 window 对象。我很困惑,如果我们有闭包,为什么还要使用 window 呢?

最佳答案

当多个函数访问全局变量时,IIFE 有助于避免全局变量污染

使用局部变量时,闭包函数非常有用。

关于javascript - javascript 中闭包和 IIFE 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41228824/

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