在Google API 3中,我看到了以下代码,这让我有点疑惑。
...
for (var i = 0, marker; marker = markers[i]; i++) {
marker.setMap(null);
}
...
在for
循环中,在循环变量初始化之后,另一个变量marker
没有赋值。
我想知道它的语义是什么。有人可以解释一下吗?
说实话,我甚至不知道如何搜索,因为我不知道怎么称呼它。 (我通常会在搜索结果中解释循环,但不是这个具体情况)。
答案 0 :(得分:2)
声明变量marker
,其初始值为undefined
。
此后,变量成为for
循环测试表达式中赋值表达式的目标。
如果执行了循环块,那么这意味着marker
将在块的主体中具有一些“真实”值。在循环之后,marker
会有一些“假的”值。
在所有情况下,var
循环标头内的for
的处理方式与普通var
语句的处理方式相同。你问题中的循环完全等同于
var i, marker;
for (i = 0; marker = markers[i]; i++) {
// ...
}
请注意var
声明 - 包括for
循环标题中的声明 - 被解释为声明(只是声明,与任何初始化表达式分开)放在封闭范围的最开始。