在Re-Introduction to Javascript中,语法
for (var i = 0, item; item = a[i++];)
被解释为中间“项目”是对真实性/虚假性的条件测试。 但是,我假设语法是(开始;条件测试;控制因子),每个段之间有分号。在这里,语法对我来说是不熟悉的(开始,条件测试;控制因素;),中间是逗号,最后是分号。它等同于
for (var i = 0; item; item = a[i++])
如果是这样,为什么最后用逗号和分号写它?
答案 0 :(得分:6)
在那个表达中,我们有
var i = 0, item
- 这声明了两个变量,并分配其中一个。item = a[i++]
- 执行赋值,并测试赋值结果nothing
- i
的增量是作为条件的一部分完成的,因此这里不需要任何内容 for-loop
基本上等同于以下内容:
initialization;
while (condition) {
body;
control factor;
}
因此,当我们从你的循环中替换时,我们得到:
var i = 0, item;
while (item = a[i++]) {
// body that you didn't show
}
赋值的值是指定的值,因此条件是a[i]
是否真实。不需要控制因素,因为a[i++]
同时返回a[i]
和 的值增加i
。
编写此循环的更典型方法是:
for (var i = 0; a[i]; i++) {
var item = a[i];
// body that you didn't show
}
作者刚才展示了如何将这些内容结合起来。
答案 1 :(得分:2)
格式没有改变。它只是声明var item
。因此,它在start
部分中声明了两个变量。真实性测试为item = a[i++];
,control factor
无效。
for (;;) statement
是否有效声明。您无需在任何部分放置任何内容。
只要item = a[i++]
评估为item
, true
的评估结果为true。真实性在作业的左侧完成。这取决于它的数据类型,但对于int,这可以是除0
之外的任何值。