【问题标题】:How well is the `for of` JavaScript statement supported?`for of` JavaScript 语句的支持情况如何?
【发布时间】:2015-02-07 16:08:47
【问题描述】:
var nameArray = [

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

];  

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

}

我想知道,for( item of array ) 在浏览器支持、移动 JavaScript 支持方面的支持程度如何 - 我知道您无法做到 greater than >,这是纯粹的迭代?

我刚刚发现了这个,这和我希望的一样好吗?

【问题讨论】:

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


【解决方案1】:

这样做的经典方法如下:

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

这将为您提供“foreach”循环的确切功能,我怀疑这是您真正想要的。 这还为您提供了在 Internet Explorer 中工作的额外好处。

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

【讨论】:

  • 我不明白“OOP”与此有什么关系。
  • 好吧,在我看来,foreach 循环更多是 OO 语言的属性。此外,这有用地显示了提到的版本,我重视贡献。
  • 说“对于每个循环都是...... OO 语言的属性”是严重错误的。
  • 这是错误的。 'for of' 比显示的 for 循环更可靠。 JS 数组可以有间隙和各种索引,它们不是数字的,也不是顺序的。
【解决方案2】:

MDN:

虽然 for...in 迭代属性名称,但 for...of 迭代属性值。

以上是for...of 循环的作用。以下是它的当前状态。

这是一项实验性技术,属于 Harmony (ECMAScript 6) 提议。因为这项技术的规格还没有稳定下来, 检查compatibility 表在各种浏览器中的用法。另请注意 实验技术的语法和行为是主题 随着规范的变化,在未来版本的浏览器中发生变化。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

      • '虽然将其用作遍历 Array 元素的一种方式可能很诱人,但 for...in 语句将返回除数字索引之外的用户定义属性的名称。因此,在遍历数组时最好使用带有数字索引的传统 for 循环,因为如果您修改 Array 对象,例如添加自定义属性或方法。 MDN - for...in/arrays
      猜你喜欢
      • 2013-08-19
      • 1970-01-01
      • 2015-09-14
      • 2021-09-11
      • 2016-06-19
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 2014-02-11
      相关资源
      最近更新 更多