Javascript'Array'和'Loop'如何"变量[i]"成为一个条件

CoD*_*ARK 4 javascript arrays loops for-loop while-loop

在这个脚本中,cars [i]被用作条件如何在程序进入阵列中的第4个变量后,程序如何识别条件的天气true或者false程序是否正确停止?

所以问题是:程序如何识别条件以及如何将汽车[i]作为一种条件.

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var i = 0;
var text = "";

for (;cars[i];) {
    text += cars[i] + "<br>";
    i++;
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 6

这里有两件事情在起作用:

  1. 在JavaScript中,当您使用值作为条件时,它被强制为布尔值.值0,"",NaN,null,并undefined强制对false(他们,再加上false,被称为"falsey"值); 所有其他人("真理价值观")强迫true.

  2. 如果您尝试访问阵列中不存在的条目,则会返回undefined.

所以当i到达时4,cars[i]undefined,哪个是强制的false,并且循环停止.但依赖于此可能会设置一个陷阱,因为如果有cars强制的任何条目false(在该示例中没有,但是......),循环将在处理整个数组之前停止.


旁注:for (; condition ;)是一种非常奇怪的写作方式while (condition).如果您没有初始化,测试和更新部件,for可能不是您想要的控制结构.你说你试图理解这段代码,所以我猜你没有写它; 请注意质量可能不会那么高.

这是编写该循环的"正常"方式:

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var i;
var text = "";
for (i = 0; i < cars.length; i++) {
    text += cars[i] + "<br>";
}
Run Code Online (Sandbox Code Playgroud)

或者更现代的东西:

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = "";
cars.forEach(function(car) {
    text += car + "<br>";
});
Run Code Online (Sandbox Code Playgroud)

或者更高级的东西,但可能会为初学者输出:

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = cars.reduce(function(acc, car) {
    return acc + car + "<br>";
}, "");
Run Code Online (Sandbox Code Playgroud)