JavaScript中for循环的单元化变量 - 它的语义是什么?

时间:2015-06-29 14:20:09

标签: javascript for-loop google-maps-api-3

Google API 3中,我看到了以下代码,这让我有点疑惑。

...
for (var i = 0, marker; marker = markers[i]; i++) {
      marker.setMap(null);
}
...

for循环中,在循环变量初始化之后,另一个变量marker没有赋值。

我想知道它的语义是什么。有人可以解释一下吗?

说实话,我甚至不知道如何搜索,因为我不知道怎么称呼它。 (我通常会在搜索结果中解释循环,但不是这个具体情况)。

1 个答案:

答案 0 :(得分:2)

声明变量marker,其初始值为undefined

此后,变量成为for循环测试表达式中赋值表达式的目标。

如果执行了循环块,那么这意味着marker将在块的主体中​​具有一些“真实”值。在循环之后,marker会有一些“假的”值。

在所有情况下,var循环标头内的for的处理方式与普通var语句的处理方式相同。你问题中的循环完全等同于

var i, marker;
for (i = 0; marker = markers[i]; i++) {
  // ...
}

请注意var声明 - 包括for循环标题中的声明 - 被解释为声明(只是声明,与任何初始化表达式分开)放在封闭范围的最开始。