【问题标题】:Javascript ' Array ' and ' Loop ' how can " variable[i] " be a CONDITIONJavascript'Array'和'Loop'如何“变量[i]”成为条件
【发布时间】:2015-06-03 01:28:14
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你是想理解代码还是寻求帮助来做某事?
  • 我请你帮助理解代码,它令人困惑我无法前进

标签: javascript arrays loops for-loop while-loop


【解决方案1】:

这里有两件事在起作用:

  1. 在 JavaScript 中,当您使用值作为条件时,它会被强制为布尔值。值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>";
}, "");

【讨论】:

  • 指出for (; condition ;) 本质上只是一个while (condition) 可能是最重要的部分。由于i 正在初始化和更新,代码应该是for (var i = 0; condition; i++)
  • @T.J.Crowder 如果 i="0 那么这是一个错误的陈述,对吧?
  • @JokerSpirit:我不明白这个问题。
  • @T.J.Crowder 看到你说 "",0,NAN 是假值吧?这里变量 i=0;那么条件是假的吧。那么循环应该停止。
  • @JokerSpirit:假的,不是假的。是的,如果你做了i = 0 然后你使用i 作为条件,它会是假的并且循环会停止。请注意,这不是我在答案中的任何地方所做的。在答案中使用i 的唯一循环是for (i = 0; i &lt; cars.length; i++)。其中的条件是i &lt; cars.length,而不是i
猜你喜欢
  • 2021-06-22
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 2016-05-16
  • 1970-01-01
  • 2022-11-02
  • 2022-07-13
相关资源
最近更新 更多