javascript - JavaScript 中 for 循环中未初始化的变量——它的语义是什么?

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

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/

相关文章:

r - 如何在R Studio中的for循环中包含计数过程?

java - 为什么java中有两种不同的for循环?

for-loop - 批处理文件,For 循环不回显行

javascript - 当用户移动 map 而不是 setCenter 方法时捕获 bounds_changed 事件

javascript - 用你自己的覆盖浏览器拼写检查?

javascript - Raphaeljs : How to get the elements reference back using event. 目标?

javascript - WebStorm/ cucumber : Undefined step reference

Javascript 正则表达式替换有时不起作用

javascript - 在 functions.php (wordpress) 中加载 jQuery/JavaScript

javascript - 如何从网络配置文件中获取谷歌地图 api key