Javascript'Array'和'Loop'如何“变量[i]”成为条件
Posted
技术标签:
【中文标题】Javascript\'Array\'和\'Loop\'如何“变量[i]”成为条件【英文标题】:Javascript ' Array ' and ' Loop ' how can " variable[i] " be a CONDITIONJavascript'Array'和'Loop'如何“变量[i]”成为条件 【发布时间】:2015-06-03 01:28:14 【问题描述】:在此脚本中,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
、""
、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>";
, "");
【讨论】:
指出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 < cars.length; i++)
。其中的条件是i < cars.length
,而不是i
。以上是关于Javascript'Array'和'Loop'如何“变量[i]”成为条件的主要内容,如果未能解决你的问题,请参考以下文章