Javascript ES6中的for与FizzBuzz测试中的for循环 我有一个问题理解为什么ES6中的for语句在执行简单的FiZZBUZZ测试时迭代数组时的行为不同,请考虑下面的例子 let numbers = [0,1,2,3,4];

Javascript ES6中的for与FizzBuzz测试中的for循环 我有一个问题理解为什么ES6中的for语句在执行简单的FiZZBUZZ测试时迭代数组时的行为不同,请考虑下面的例子 let numbers = [0,1,2,3,4];,javascript,ecmascript-6,Javascript,Ecmascript 6,现在让我们使用for循环遍历数组 for (var i=1; i <= numbers.length; i++) { if (i % 15 == 0) console.log("FizzBuzz"); else if (i % 3 == 0) console.log("Fizz"); else if (i % 5 == 0) console.log("Buzz"); else console.l

现在让我们使用for循环遍历数组

for (var i=1; i <= numbers.length; i++)
{
    if (i % 15 == 0)
        console.log("FizzBuzz");
    else if (i % 3 == 0)
        console.log("Fizz");
    else if (i % 5 == 0)
        console.log("Buzz");
    else
        console.log(i);
}
现在让我们使用ES6中的in语句

for (number in numbers)
{
    if (number % 15 == 0)
        console.log("FizzBuzz");
    else if (number % 3 == 0)
        console.log("Fizz");
    else if (number % 5 == 0)
        console.log("Buzz");
    else
        console.log(number);
}
结果是

FizzBuzz
1
2
Fizz
4

for in语句的行为不应该与for循环相同吗

不同之处在于,在第一个示例中,您从1开始测试i,然后根据i进行测试,但在第二个循环中,您根据数组中的数字进行测试,从0开始

但是,这可能无法按预期工作,具体取决于您的javascript引擎。您根本不应该使用
for in
循环来迭代数组。请选择此模式:

for (let number of numbers) {
  console.log(number);
}

这篇文章很好地解释了原因:

No
for..of
循环出现在Question@guest271314编辑问题以反映问题感谢。循环迭代对象的属性中,对象的属性是字符串。同样,问题文本中的JavaScript中没有出现
for..of
循环,问题JavaScript中的“ES6循环”在哪里?我想这是指。。。在loop@csander目的是为了。。。在
中,回答时未定义值
。OP在哪里实际使用了JavaScript的
for..of
循环?
for (let number of numbers) {
  console.log(number);
}