首先他么的数组中放的都是没有执行的函数体,在下面执行的时候调用i这个变量,我可以理解第二个的输出,但是第一个的返回值i为什么可以固定i循环时的值,他本身有没有执行
这段代码
var list = []
var str = ''
for (var i = 0; i < 10; i++) {
(function (i) {
console.log(i)
list.push(function () {
return i
})
})(i)
}
console.log(list)
for (var j = 0; j < 10; j++) {
console.log(list[j]())
str += list[j]()
}
console.log(str)//输出0123456789
和这段代码
var list = []
var str = ''
for (var i = 0; i < 10; i++) {
list.push(function () {
console.log(i)
return i
})
console.log(list[i])
}
console.log(i)
console.log(list)
for (var j = 0; j < 10; j++) {
// console.log(list[j])
str += list[j]()
}
console.log(str)//输出10101010101010101010
</script>