JavaScript`of`关键字(用于……of循环)

JavaScript`of`关键字(用于……of循环),javascript,firefox-addon,firefox-addon-sdk,Javascript,Firefox Addon,Firefox Addon Sdk,我刚刚发现了一个我从未见过的关键词: var tabs = require('sdk/tabs'); for (let tab of tabs) console.log(tab.title); 关键字的是由Mozilla编写的还是标准化的?这是EcmaScript 6的一项功能,不稳定,也不受所有现代浏览器的支持。您需要等待它稳定下来,或者您可以使用一个transpiler,如将ES6代码转换为ES5的transpiler。循环是一项功能,它可以迭代属性值 考虑到这个问题的上下文是Fire

我刚刚发现了一个我从未见过的关键词:

var tabs = require('sdk/tabs');
for (let tab of tabs)
  console.log(tab.title);

关键字的
是由Mozilla编写的还是标准化的?

这是EcmaScript 6的一项功能,不稳定,也不受所有现代浏览器的支持。您需要等待它稳定下来,或者您可以使用一个transpiler,如将ES6代码转换为ES5的transpiler。

循环是一项功能,它可以迭代属性值

考虑到这个问题的上下文是Firefox插件,问题不在于它何时或是否在其他浏览器中可用。问题在于这一点以及使用它所导致的对向后兼容性的任何限制

它于年被添加到Firefox中。因此,使用它将导致将您的附加组件限制为Firefox13+。考虑到截至2014年10月的当前版本是Firefox 33.0,并且Firefox 13和现在之间已经有多个ESR版本,使用
for…of
循环可能不会显著减少能够使用您的插件的人数。您正在使用的某些其他功能可能会将您的加载项限制为更新的版本

对…的使用
与之不同,
for…of
循环不仅限于数组,而且将迭代其他类型的,其中包括大量不同类型的对象

有时让人困惑的一件事是,
for…of
迭代属性值,而不是属性键。根据您正在做的事情,这可以是非常方便的,也可以是不合适的
for…of
循环

示例:
for..of
迭代
const list items=document.querySelectorAll('li');
对于(让列表项中的项){
console.log('item text:',item.textContent);/“第一”、“第二”、“第三”、“第四”
}

  • 首先
  • 第二
  • 第三
  • 第四

  • ES6的一部分。谷歌搜索“for of loop ES6”应该会发现一些东西。你说的“不稳定”是什么意思?此外,转码器是另外一种东西,也许你正在寻找transpiler这个词。他可以使用
    var tab in tabs
    来支持es6之前的版本吗?所有浏览器都支持使用
    var tab in tabs
    或者换句话说,for…in structure。你可以安全使用。我所说的“不稳定”是指在某些浏览器或某些浏览器的某些版本中添加了该功能,但现在相信它的支持可能不是一个好主意