gpt4 book ai didi

javascript - 分配给新变量时,计数器值在循环内发生变化

转载 作者:行者123 更新时间:2023-11-30 10:08:44 24 4
gpt4 key购买 nike

我正在学习 JS。为什么记录 funcs2[1](); 记录 4 而 funcs[1](); 记录 5?

请注意,这不是 this question 的副本.我知道 funcs[1](); 记录 5(而不是 1),因为调用的函数绑定(bind)到 i 的当前值,当循环终止时为 5。

但这不是我的问题。我想知道为什么 funcs2[1](); 记录 4 而不是 5。

var funcs = [];
for (var i = 0; i < 5; i++) {
funcs.push(function () {
return i;
});
}

console.log(funcs[1]());
5

var funcs2 = [];
for (var i = 0; i < 5; i++) {
var x = i;
funcs2.push(function () {
return x;
});
}

console.log(funcs2[1]());
4

最佳答案

由于javascript中没有 block 作用域,所以在两个循环执行完后,变量i的值在这两种情况下都是5

但是在第二种情况下 x 的值为 4 因为这是最后一次迭代索引并且 i++ 发生在 之后x = i 赋值。

关于javascript - 分配给新变量时,计数器值在循环内发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27691887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com