首页 > 解决方案 > 被 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

标签: javascript

解决方案


你可以使用 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]();
}


推荐阅读