首页 > 试题广场 >

函数 for(var i = 0; i 10; i++)

[填空题]

函数

for(var i = 0; i < 10; i++) {
setTimeout((function(e) {
return function( ) {
console.log(e);
}
})(i), 1000)
}


的输出结果为:1

题干代码相当于如下写法:
for(var i = 0; i < 10; i++) {
setTimeout((function(e) {
let e=null;
return function( ) {
console.log(e);
}
})(i), 1000)
}


产生上述结果的原因主要是因为形成了闭包,同过自执行函数传递进来的变量相当于是在return的函数的作用域的上一级声明了一个局部变量e,当函数执行时,会一级一级的向上查找,当查找到上一级时的发现存在局部变量e,就不再向上查找了,因此返回的结果时0,1,2,3......
发表于 2019-10-16 15:49:28 回复(0)
console不是竖着的吗
发表于 2019-10-09 23:19:07 回复(0)