在理解混合“For循环”和“数组”(初学者)的结果时遇到问题

时间:2014-05-01 10:05:13

标签: javascript arrays for-loop

我目前正在研究javascript,我不了解基于特定条件的结果。感谢您对像我这样的新手的耐心;)

在下面的情况中,我不明白为什么显示最后一行“蓝色”,因为条件是“仅当计数器> 0时显示”。

var table = ['blue','yellow','orange','red'];
for (var counter = table.length ; counter > 0 ; counter--)
{
document.write(table[counter-1] + "<br>")
}

查看结果的另一种方法是:

var table = ['blue','yellow','orange','red'];
document.write(table[table.length-1] + '<br>'); // result: table[3] "red"
document.write(table[table.length-2] + '<br>'); // result: table[2] "orange"
document.write(table[table.length-3] + '<br>'); // result: table[1] "yellow"
document.write(table[table.length-4] + '<br>'); // result: table[0] "blue" = should not be displayed if we have the condition 'counter > 0'

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

因为您正在使用 -

var table = ['blue','yellow','orange','red'];
for (var counter = table.length ; counter > 0 ; counter--)
{
    document.write(table[counter-1] + "<br>") //when table has 4 item, counter = 1, counter > 0, table[counter - 1] = table[0]
}

换句话说,您的代码可以完美地打印所有内容。如果您想跳过最后一个,请执行此操作 -

var table = ['blue','yellow','orange','red'];
for (var counter = table.length - 1; counter > 0 ; counter--)
{
    document.write(table[counter] + "<br>")
}

答案 1 :(得分:1)

在以下行中:

document.write(table[counter-1] + "<br>"),您将计数器递减1.它不会验证此处的条件。

使用此counter - 1 > 0

答案 2 :(得分:0)

这是因为在你的循环中,你正在使用table[counter-1]。 计数器永远不会到达0,但你从中取走1,这使得它可以访问table

的第零个元素

答案 3 :(得分:0)

在JavaScript中,数组在索引0中启动。在条件中,您从长度数组循环到1&#34;计数器&gt; 0&#34;但是当你打印数组项时你得到counter-1,如果counter等于1,你将获得数组索引0。