在此脚本中,cars[i] 用作条件,程序如何识别条件为 true
或 false
并且程序在它之后正确停止输入数组中的第 4 个变量?
所以问题是:程序如何识别条件以及 cars[i] 如何成为条件。
var cars = ["BMW", "Volvo", "Saab", "Ford"];
var i = 0;
var text = "";
for (;cars[i];) {
text += cars[i] + "<br>";
i++;
}
最佳答案
这里有两件事在起作用:
在 JavaScript 中,当您使用值作为条件时,它会被强制转换为 bool 值。值
0
、""
、NaN
、null
和undefined
强制转换为false
(它们加上false
,被称为“假”值);所有其他(“真实值”)强制为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>";
}, "");
关于Javascript ' Array ' 和 ' Loop ' "variable[i] "如何成为条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29339311/