猿问

IIFE算是闭包吗?

为什么我总觉得IIFE只是简单的函数调用,没有闭包啊

下面的代码哪有闭包啊


for(var i=0; i<5; ++i){

(function foo(j){  

    setTimeOut(function foo1(){ console.log(j) }, 1000 ) 

    })(i)

}


慕沐林林
浏览 597回答 1
1回答

aluckdog

闭包和IIFE没关系,如果用IIFE实现了作用域和函数的组合(比如return了函数)就有闭包,反之就没有。这里是MDN的解释Closures闭包var myFunc = (function makeFunc() {&nbsp; var name = 'Mozilla';&nbsp; function displayName() {&nbsp; &nbsp; alert(name);&nbsp; }&nbsp; return displayName;})();myFunc();没有闭包(function makeFunc() {&nbsp; var name = 'Mozilla';&nbsp; function displayName() {&nbsp; &nbsp; alert(name);&nbsp; }&nbsp; displayName();})();我觉得闭包的特征在于是否利用函数进行跨作用域操作,保留其他作用域中的变量。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答