为什么我总觉得IIFE只是简单的函数调用,没有闭包啊下面的代码哪有闭包啊for(var i=0; i<5; ++i){(function foo(j){ setTimeOut(function foo1(){ console.log(j) }, 1000 ) })(i)}
1 回答

aluckdog
TA贡献1847条经验 获得超7个赞
闭包和IIFE没关系,如果用IIFE实现了作用域和函数的组合(比如return了函数)就有闭包,反之就没有。
这里是MDN的解释Closures
闭包
var myFunc = (function makeFunc() {
var name = 'Mozilla';
function displayName() {
alert(name);
}
return displayName;
})();
myFunc();
没有闭包
(function makeFunc() {
var name = 'Mozilla';
function displayName() {
alert(name);
}
displayName();
})();
我觉得闭包的特征在于是否利用函数进行跨作用域操作,保留其他作用域中的变量。
添加回答
举报
0/150
提交
取消