此脚本中的car [i]用作条件如何识别天气条件为true
或false
并且程序在进入第4个变量后正确停止数组?
所以问题是:程序如何识别条件以及汽车[i]如何成为一种状况。
var cars = ["BMW", "Volvo", "Saab", "Ford"];
var i = 0;
var text = "";
for (;cars[i];) {
text += cars[i] + "<br>";
i++;
}
答案 0 :(得分:6)
这里有两件事情可以解决:
在JavaScript中,当您使用值作为条件时,它被强制为布尔值。值0
,""
,NaN
,null
和undefined
强制转换为false
(它们加上false
,被称为“虚假”的价值观);所有其他人(“truthy values”)强迫true
。
如果您尝试访问数组中不存在的条目,则会返回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>";
}
或者更现代的东西:
var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = "";
cars.forEach(function(car) {
text += car + "<br>";
});
或者更高级的东西,但可能会为初学者输出:
var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = cars.reduce(function(acc, car) {
return acc + car + "<br>";
}, "");