使用for循环数字数组..中显示了意外的结果



我有一个js脚本。

我想提醒数组中的每个数字。

但它总是从0开始显示,而不是实际数字。

var indexes = [1,2]
arrayOfDigits = indexes.map(Number);
var i = 0;
for (i in arrayOfDigits)
{
alert(i);
}

它先向0发出警报,然后向1发出警报。但我想要1然后2

您的代码有很多问题,让我们来看看:

  1. for...in用于迭代对象自己的可枚举属性,而不是迭代数组成员。您需要for...of

  2. 不要再使用var,除非您明确知道并需要它的特殊作用域行为。请改用const,或者使用let,以防您需要为其分配多次。

  3. 您的代码有一个未声明的变量,该变量会自动使其成为全局变量。不污染全局命名空间是普遍的共识。使用前始终声明任何变量。

  4. 不要在循环之外初始化甚至声明for...of循环的循环变量。这是在for (const digit of arrayOfDigits)构造本身中正确完成的。

  5. 不要使用alert进行调试;请改用console.log

以下是正在工作的、已更正的代码:

const indexes = [1, 2]
const arrayOfDigits = indexes.map(Number);
for (const digit of arrayOfDigits) {
console.log(digit);
}

如果您希望输出为1和2,请使用此安装的

var indexes = [1,2]
arrayOfDigits = indexes.map(Number);
for (var i = 0;i<arrayOfDigits.length;i++)
{
alert(arrayOfDigits[i]);
}

for循环遍历对象的所有属性(包括来自其原型链的属性(。你只需要对它进行迭代。为此,你可以使用For of循环(在元素上循环(,也可以使用Array#forEach,它可以做到这一点,但可以帮助你访问其他东西,比如索引:

indexes.forEach(number => {
alert(number);
});

最新更新