在Google API 3看到下面的代码,让我有点疑惑。
...
for (var i = 0, marker; marker = markers[i]; i++) {
marker.setMap(null);
}
...
在 for
循环中,在循环变量初始化之后放置另一个变量 marker
没有赋值。
我想知道它的语义是什么。有人可以解释一下吗?
老实说,我什至不知道如何搜索它,因为我不知道如何调用它。 (我得到的搜索结果一般都解释了循环,但不是这种特定情况)。
最佳答案
声明了变量marker
,其初始值为undefined
。
紧接着,该变量成为 for
循环测试表达式中赋值表达式的目标。
如果循环 block 被执行,那么这意味着 marker
将在 block 的主体中具有一些“truthy”值。循环后,marker
将具有一些“虚假”值。
在所有情况下,for
循环 header 内的 var
都被视为与普通 var
语句相同的方式。您问题中的循环完全等同于
var i, marker;
for (i = 0; marker = markers[i]; i++) {
// ...
}
请注意,var
声明——包括那些在 for
循环 header 中的声明——被解释为好像声明(只是声明,与任何初始化表达式)被放置在封闭范围的最开始。
关于javascript - JavaScript 中 for 循环中未初始化的变量——它的语义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31118108/