繁体   English   中英

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

[英]Javascript ' Array ' and ' Loop ' how can “ variable[i] ” be a CONDITION

在这个脚本中,cars [i]被用作条件,程序如何识别条件是true还是false ,并且程序在进入数组中的第4个变量后正确停止?

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

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

for (;cars[i];) {
    text += cars[i] + "<br>";
    i++;
}

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

  1. 在JavaScript中,当您使用值作为条件时,它被强制为布尔值。 0""NaNnullundefined强制为false (它们加上false ,称为“falsey”值); 所有其他人(“真理价值观”)都强迫归于true

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

因此,当i达到4cars[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>";
}, "");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM