为什么我总觉得IIFE只是简单的函数调用,没有闭包啊
下面的代码哪有闭包啊
for(var i=0; i<5; ++i){
(function foo(j){
setTimeOut(function foo1(){ console.log(j) }, 1000 )
})(i)
}
为什么我总觉得IIFE只是简单的函数调用,没有闭包啊
下面的代码哪有闭包啊
for(var i=0; i<5; ++i){
(function foo(j){
setTimeOut(function foo1(){ console.log(j) }, 1000 )
})(i)
}
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
闭包和IIFE没关系,如果用IIFE实现了作用域和函数的组合(比如return了函数)就有闭包,反之就没有。
这里是MDN的解释Closures
闭包
没有闭包
我觉得闭包的特征在于是否利用函数进行跨作用域操作,保留其他作用域中的变量。