Javascript ' Array ' 和 ' Loop ' "variable[i] "如何成为条件

标签 javascript arrays loops for-loop while-loop

在此脚本中,cars[i] 用作条件,程序如何识别条件为 truefalse 并且程序在它之后正确停止输入数组中的第 4 个变量?

所以问题是:程序如何识别条件以及 cars[i] 如何成为条件。

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

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

最佳答案

这里有两件事在起作用:

  1. 在 JavaScript 中,当您使用值作为条件时,它会被强制转换为 bool 值。值 0""NaNnullundefined 强制转换为false(它们加上 false,被称为“假”值);所有其他(“真实值”)强制为 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>";
}

或者更现代的东西:

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/

相关文章:

javascript - 如何管理 quickblox session Javascript SDK

javascript - Html Javascript Firebase 创建用户

java - 创建 HashMap 数组,同时指定 HashMap<String, Integer>

javascript - .map 数据库查询中的多个条目

c - 数组在c中如何工作?

javascript - 无法连接到数据库 : Error getaddrinfo ENOTFOUND db db:3306

Javascript/jQuery 在数组的其余部分查找并删除数组值

c++ - 使用循环获取数字并将其列出(专长数组)

C# 等效于 C++ map<string,double>

java - 循环方法