javascript - 被 JS for 循环输出弄糊涂了
问题描述
我有一段代码:
const calculatenumbers = [];
for (var i = 1; i <= 5; i++) {
var myindex = i;
calculatenumbers.push(() => {
var calculatednumber = myindex * 100;
console.log('my number is:' + calculatednumber);
});
}
for (var j = 0 ; j < calculatenumbers.length; j++) {
calculatenumbers[j]();
}
这段代码的输出是:
my number is:500
my number is:500
my number is:500
my number is:500
my number is:500
为什么代码输出五倍“我的号码是:500”而不是
my number is:100
my number is:200
my number is:300
my number is:400
my number is:500
解决方案
你可以使用 let,不要在循环函数中使用 var
const calculatenumbers = [];
for (var i = 1; i <= 5; i++) {
let myindex = i;
calculatenumbers.push(() => {
var calculatednumber = myindex * 100;
console.log('my number is:' + calculatednumber);
});
}
for (var j = 0; j < calculatenumbers.length; j++) {
calculatenumbers[j]();
}
推荐阅读
- php - wp.customize 不是函数
- c# - 会话记录与 AAD v1 身份验证相结合
- python - 不明白为什么我收到“numpy.ndarray object not callable”错误?
- itext - itext 7 - 带有自定义页面的画布
- javascript - 如何检测多维数据集的哪一侧被点击
- angular - Ionic AngularFireDatabase 说即使规则是开放的也没有授权
- ruby-on-rails - 在级联删除时覆盖子对象的默认范围
- mysql - 从列类型 varchar() 获取不同的当前和未来周数和年份
- c - 无法将矩阵分配给**指针
- selenium - 运行 Cucumber 功能时 Chrome 启动两次