支持`for of` JavaScript语句有多好?

时间:2014-12-09 16:58:48

标签: javascript for-loop ecmascript-6 browser-support

var nameArray = [

{ name: 'john', surname: 'smith'  },
{ name: 'paul', surname: 'jones' },
{ name: 'timi', surname: 'abel' },

];  

for (str of nameArray) {    
   console.log( str.name );

}

我想知道,在浏览器支持,移动JavaScript支持方面for( item of array )的支持程度如何 - 我发现你不能做greater than >而这是纯粹的迭代?

我刚刚发现了这个,这是我希望的那么好吗?

5 个答案:

答案 0 :(得分:11)

这样做的经典方法如下:

  for(var i = 0; i < nameArray.length; i++){
    var str = nameArray[i];
  }

这将为您提供“foreach”循环的确切功能,我怀疑这是您在此之后的真实情况。 这也为您提供了在Internet Explorer中工作的额外好处。

MDN中描述的确切循环也有广泛的了解。此时Android网站似乎并非所有内容都支持您的方法,因此请检查该页面上的兼容性列表;似乎是新JavaScript的未来版本,可能会在其中包含OOP。

答案 1 :(得分:8)

MDN:

  

而for ...迭代属性名称,for ... of iterate over property values。

以上是for...of循环的作用。以下是其现状。

  

这是一项实验技术,是和谐的一部分(ECMAScript 6)   提案。因为这项技术的规格还没有稳定,   检查compatibility表以了解各种浏览器的用法。另请注意   实验技术的语法和行为是主题   随着规范的变化,在未来版本的浏览器中进行更改。

答案 2 :(得分:3)

这是ES6 for..of循环。根据我刚刚链接的MDN文章,它得到了几个浏览器的支持(请参阅那里的确切版本),但不是IE。目前,一些移动浏览器也支持它。

答案 3 :(得分:3)

与此同时,您可以使用以下内容:

for(element_idx in elements) {
    element = elements[element_idx];
    ...
}

for...in has been standard since ECMAScript 1st Edition

答案 4 :(得分:-6)

不是。

即使它是,在阵列上使用它也是不合适的。

对于数组,您应该始终使用传统的for循环。

但是,你可以稍微调整一下:

for( var i=0, l=nameArray.length, str=nameArray[0];
     i<l;
     i++,str=nameArray[i]) {
  console.log(str.name);
}