Javascript逻辑 - FOR循环如何知道自动访问哪个数组

时间:2015-01-26 22:40:44

标签: javascript

var myArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];


for (var i = 1; i < 21; i++){
if (i%3 === 0 && i%5 === 0){
    console.log("FizzBuzz")
}
else if (i%3 === 0){
    console.log("Fizz")
}
else if (i%5 === 0){
    console.log("Buzz")
}
else {
    console.log(i)
}}

您好!

此代码是codecademy的解决方案之一。我想知道FOR循环如何知道访问'myArray'数组以找到'i'的值。我从来没有在FOR循环中提到'myArray',但它知道。我很困惑,因为如果我想让FOR循环访问另一个数组怎么办? FOR循环的逻辑是什么?

非常感谢大家。

5 个答案:

答案 0 :(得分:4)

没有。 <{1}}永远不会被使用。

答案 1 :(得分:1)

它不访问数组,只是通过递增i来模拟数组。

如果您要将myArray更改为[2,3,5,6,7,24,50](或者不是一个容易计算的序列),那么代码将会失败。

更正确的解决方案是:

var myArray = [/* numbers go here */];

myArray.forEach(function(i) {
    if (i%3 === 0 && i%5 === 0) {
        console.log("FizzBuzz");
    } else if (i%3 === 0) {
        console.log("Fizz");
    } else if (i%5 === 0) {
        console.log("Buzz");
    } else {
        console.log(i);
    }
});

答案 2 :(得分:0)

删除myArray,您会发现它仍然有效。你正在做的是将i设置为1,然后计算到21。这将产生与迭代一系列有序数字相同的结果。

答案 3 :(得分:0)

我想你在这之后:

var myArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];


for (var i = 1; i < 21; i++){
if (i%3 === 0 && i%5 === 0){
    console.log(myArray[i]+"is FizzBuzz")
}
else if (i%3 === 0){
    console.log(myArray[i]+"is Fizz")
}
else if (i%5 === 0){
    console.log(myArray[i]+"is Buzz")
}
else {
    console.log(i)
}}

答案 4 :(得分:0)

它不会访问myArray

for (var i = 1; i < 21; i++){
if (i%3 === 0 && i%5 === 0){
    document.write("FizzBuzz, ");
}
else if (i%3 === 0){
     document.write("Fizz, ");
}
else if (i%5 === 0){
     document.write("Buzz, ");
}
else {
     document.write(i+", ");
}}

http://en.wikipedia.org/wiki/Fizz_buzz