有两个初始化,没有“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);
}
答案 0 :(得分:2)
访问Javascript中的越界索引将产生undefined
,这是一个假值。一旦索引超出了边界,feature = features[i]
赋值(其值为其赋值)将被视为false
,循环将退出。
答案 1 :(得分:0)
如果您希望分配和返回相同的值,则可以执行return variable = value
快捷方式。这将返回value
<强>示例强>
var x;
function notify(v){
return x = v;
}
console.log(notify(10))
&#13;
因此,在您的代码中,当您执行feature = features[3]
时,由于features[3]
未定义,因此返回undefined
,这是假的。因此你的循环中断了。
<强>示例强>
var x = 0;
if(x = 1){
console.log('Success')
}
else{
console.log('Error')
}
if(x = undefined){
console.log('Success')
}
else{
console.log('Error')
}
&#13;
注意如果features[i]
返回0
或false
或undefined
或任何其他虚假值,您的循环将会中断。在这种情况下这很好用,但我不推荐它。