这个for循环如何工作并结束?

时间:2016-10-13 12:26:58

标签: javascript for-loop

有两个初始化,没有“x<y”来限制迭代。那么这个循环是如何工作的呢?

var features = [{
  position: new google.maps.LatLng(-33.91721, 151.22630),
  type: 'info'
}, {
  position: new google.maps.LatLng(-33.91539, 151.22820),
  type: 'info'
}, {
  position: new google.maps.LatLng(-33.91747, 151.22912),
  type: 'info'
}];
for (var i = 0, feature; feature = features[i]; i++) {
  addMarker(feature);
}

2 个答案:

答案 0 :(得分:2)

访问Javascript中的越界索引将产生undefined,这是一个假值。一旦索引超出了边界,feature = features[i]赋值(其值为其赋值)将被视为false,循环将退出。

答案 1 :(得分:0)

如果您希望分配和返回相同的值,则可以执行return variable = value快捷方式。这将返回value

<强>示例

&#13;
&#13;
var x;
function notify(v){
  return x = v;
}

console.log(notify(10))
&#13;
&#13;
&#13;

因此,在您的代码中,当您执行feature = features[3]时,由于features[3]未定义,因此返回undefined,这是假的。因此你的循环中断了。

<强>示例

&#13;
&#13;
var x = 0;
if(x = 1){
  console.log('Success')
}
else{
  console.log('Error')
}

if(x = undefined){
  console.log('Success')
}
else{
  console.log('Error')
}
&#13;
&#13;
&#13;

注意如果features[i]返回0falseundefined或任何其他虚假值,您的循环将会中断。在这种情况下这很好用,但我不推荐它。