Blog
Blog copied to clipboard
《JavaScript深入之闭包》讨论
例子和闭包没有任何关系
Hello, 这样的理解不知道对不对啊?
var data = [];
for(var i = 0; i < 5; i++) {
data[i] = function() {
console.log(i);
}
}
data[0]();
data[1]();
data[2]();
data[3]();
data[4]();
// VS
var data = [];
for(var i = 0; i < 5; i++) {
data[i] = (function(i) {
return function() {
console.log(i)
}
})(i)
}
data[0]();
data[1]();
data[2]();
data[3]();
data[4]();
只是通过LIFE人为制造一个函数作用域来弥补es5没有块作用域的缺陷而已。
在函数作用域内引用了其他外层作用域的变量,就构成了闭包。
@JackDan9 这样理解也可以,还有应该是 IIFE 吧
今天面试拼多多,面试官问:子函数调用父函数,算是闭包吗?
function parent() { return function child() { parent(); } }
按照闭包的定义,函数引用了其他上下文的变量对象成员。应该不算是闭包吧?
有没有大佬从本质上分析下。