Firefox 中 ECMAScript 6 的实现情况

  • 版本网址缩略名: JavaScript/ECMAScript_6_support_in_Mozilla
  • 版本标题: Firefox 中 ECMAScript 6 的实现情况
  • 版本 id: 456749
  • 创建于:
  • 创建者: ziyunfei
  • 是否是当前版本?
  • 评论

修订内容

ECMAScript 6 是正在制定中的下一版 ECMAScript 标准, 开发代号为"Harmony" 或 "ES.next". 最新的规范草案可以在 ECMAScript 的 wiki 上找到. 你有任何关于新标准的想法, 都可以到 es-discuss 上进行反馈.

在下面表格中的 "TC39 共识情况" 一栏中, 每个特性的共识情况被分为了三个等级:

已达成共识 正在讨论中 目前有争议

这三个等级分别意味着:

  • 已达成共识: 对于特性的设计, TC39 成员之间完全达成了共识.
  • 正在讨论中: 对于特性的设计, TC39 成员基本达成了共识, 但某个方面还需要讨论.
  • 目前有争议: 关于特性的设计, TC39成员之间有明显的争议.

Firefox 已经支持的 ECMAScript 6 特性

语法特性

特性名称 实现该特性的 Firefox 版本 说明 TC39 共识情况
const JS 1.5 已实现, 但不符合当前规范: const 应该和 let 一样, 拥有块级作用域, 而现在的实现不是. 已达成共识
let (全局作用域中使用) JS 1.7 已实现, 但不符合当前规范 正在讨论中
let (块级作用域中使用) JS 1.7 已实现, 但不符合当前规范 已达成共识
解构赋值 JS 1.7 已实现, 但不符合当前规范 已达成共识
for...of {{fx_minversion_inline("13")}}   已达成共识
迭代器和生成器 ? 已实现, 但不符合当前规范 已达成共识
剩余参数 {{fx_minversion_inline("15")}}   已达成共识
默认参数 {{fx_minversion_inline("15")}}   已达成共识
展开运算符 {{fx_minversion_inline("16")}}   已达成共识
箭头函数 {{fx_minversion_inline("22")}}   已达成共识
二进制和八进制整数字面量 {{fx_minversion_inline("25")}} 二进制整数: 0b010101 或 0B010101; 八进制整数: 0o7170 或 0O7170 ?

内置API

特性名称 实现该特性的 Firefox 版本 说明 TC39 共识情况
Map {{fx_minversion_inline("13")}} 一种新的集合类型 已达成共识
Map 对象可以被迭代 {{fx_minversion_inline("17")}} 可以使用 for-of 迭代此类对象 已达成共识
Map 对象的方法   forEach, entries, keys, values 方法 正在讨论中
Set 对象可以被迭代 {{fx_minversion_inline("13")}} 一种新的集合类型 已达成共识
Set 对象可以被迭代 {{fx_minversion_inline("17")}} 可以使用 for-of 迭代此类对象 已达成共识
Set 对象的方法   forEach, entries, keys, values 方法 正在讨论中
Array 对象可以被迭代 {{fx_minversion_inline("13")}} 可以使用 for-of 迭代此类对象 已达成共识
Array.of() {{fx_minversion_inline("25")}}   ?
WeakMap {{fx_minversion_inline("6")}} 一种新的集合类型 已达成共识
weakmap.clear() {{fx_minversion_inline("20")}}   目前有争议
Proxy {{fx_minversion_inline("18")}}   正在讨论中
RegExp sticky (y) 标识 {{fx_minversion_inline("3")}} 正则表达式的粘滞匹配 已达成共识
Number.isNaN() {{fx_minversion_inline("16")}}   已达成共识
Number.isFinite() {{fx_minversion_inline("16")}}   已达成共识
Number.toInteger() {{fx_minversion_inline("16")}}   ?
Number.isInteger() {{fx_minversion_inline("16")}}   ?
Number.parseInt() {{fx_minversion_inline("25")}}   ?
Number.parseFloat() {{fx_minversion_inline("25")}}   ?
string.startsWith() {{fx_minversion_inline("17")}}   已达成共识
string.endsWith() {{fx_minversion_inline("17")}}   已达成共识
string.contains() {{fx_minversion_inline("17")}}   已达成共识
string.repeat() {{fx_minversion_inline("24")}}   已达成共识
Object.is {{fx_minversion_inline("22")}}   正在讨论中
Math.imul {{fx_minversion_inline("20")}} 类似C语言的32位整数乘法 已达成共识
新增的 Math 函数 {{fx_minversion_inline("25")}} log10, log2, log1p, expm1, cosh, sinh, tanh, acosh, asinh, atanh, hypot, trunc, sign ?

Firefox 还未支持的 ECMAScript 6 特性

  • isisnt 运算符 {{obsolete_inline}}
  • 模块
  • Symbols

相关链接

修订版来源

<p>ECMAScript 6 是正在制定中的下一版 ECMAScript 标准,&nbsp;<span style="line-height: 21px;">开发代号为"Harmony" 或 "ES.next"</span><span style="line-height: 1.572;">. </span><a href="http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts" style="line-height: 1.572;">最新的规范草案可以在 ECMAScript 的 wiki 上找到</a><span style="line-height: 1.572;">. 你有任何关于新标准的想法, 都可以到&nbsp;</span><a href="https://mail.mozilla.org/listinfo/es-discuss" style="line-height: 1.572;">es-discuss</a>&nbsp;上进行反馈<span style="line-height: 1.572;">.</span></p>
<p>在下面表格中的 "TC39 共识情况" 一栏中, 每个特性的共识情况被分为了三个等级:</p>
<table>
  <tbody>
    <tr>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
      <td style="background:yellow;">正在讨论中</td>
      <td style="background:orange;">目前有争议</td>
    </tr>
  </tbody>
</table>
<p><span style="line-height: 21px;">这三个等级分别意味着:</span></p>
<ul>
  <li><strong>已达成共识:</strong>&nbsp;对于特性的设计, TC39 成员之间完全达成了共识.</li>
  <li><strong>正在讨论中:</strong>&nbsp;对于特性的设计, TC39 成员基本达成了共识, 但某个方面还需要讨论.</li>
  <li><strong>目前有争议:</strong>&nbsp;关于特性的设计, TC39成员之间有明显的争议.</li>
</ul>
<h2 id="Firefox_.E5.B7.B2.E7.BB.8F.E6.94.AF.E6.8C.81.E7.9A.84_ECMAScript_6_.E7.89.B9.E6.80.A7" style="margin: 0px 0px 0.8em; padding: 0px;">Firefox 已经支持的 ECMAScript 6 特性</h2>
<h3 id=".E8.AF.AD.E6.B3.95.E7.89.B9.E6.80.A7">语法特性</h3>
<table class="standard-table">
  <thead>
    <tr>
      <th scope="col">特性名称</th>
      <th scope="col">实现该特性的 Firefox 版本</th>
      <th scope="col">说明</th>
      <th scope="col">TC39 共识情况</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Statements/const">const</a></code></td>
      <td>JS 1.5</td>
      <td>已实现, 但不符合当前规范: const 应该和 let 一样, 拥有块级作用域, 而现在的实现不是.</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Statements/let">let</a></code> (全局作用域中使用)</td>
      <td>JS 1.7</td>
      <td>已实现, 但不符合当前规范</td>
      <td style="background:yellow;">正在讨论中</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Statements/let">let</a></code> (块级作用域中使用)</td>
      <td>JS 1.7</td>
      <td>已实现, 但不符合当前规范</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><a href="/zh-CN/docs/Web/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_%28Merge_into_own_page.2Fsection%29">解构赋值</a></td>
      <td>JS 1.7</td>
      <td>已实现, 但不符合当前规范</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></code></td>
      <td>{{fx_minversion_inline("13")}}</td>
      <td>&nbsp;</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><a href="/zh-CN/docs/Web/JavaScript/Guide/Iterators_and_Generators">迭代器和生成器</a></td>
      <td>?</td>
      <td>已实现, 但不符合当前规范</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><a href="/zh-CN/docs/Web/JavaScript/Reference/rest_parameters">剩余参数</a></td>
      <td>{{fx_minversion_inline("15")}}</td>
      <td>&nbsp;</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><a href="/zh-CN/docs/Web/JavaScript/Reference/default_parameters">默认参数</a></td>
      <td>{{fx_minversion_inline("15")}}</td>
      <td>&nbsp;</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><span style="line-height: 1.572;"><a href="/zh-CN/docs/Web/JavaScript/Reference/Spread_operator">展开运算符</a></span></td>
      <td>{{fx_minversion_inline("16")}}</td>
      <td>&nbsp;</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><a href="/zh-CN/docs/Web/JavaScript/Reference/arrow_functions">箭头函数</a></td>
      <td>{{fx_minversion_inline("22")}}</td>
      <td>&nbsp;</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td>二进制和八进制整数字面量</td>
      <td>{{fx_minversion_inline("25")}}</td>
      <td>二进制整数: <code>0b010101</code> 或&nbsp;<code>0B010101</code>; 八进制整数: <code>0o7170</code> 或&nbsp;<code>0O7170</code></td>
      <td>?</td>
    </tr>
  </tbody>
</table>
<h3 id=".E5.86.85.E7.BD.AEAPI">内置API</h3>
<table class="standard-table">
  <tbody>
    <tr>
      <th scope="col">特性名称</th>
      <th scope="col">实现该特性的 Firefox 版本</th>
      <th scope="col">说明</th>
      <th scope="col">TC39&nbsp;<span style="line-height: 1.572;">共识情况</span></th>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map">Map</a></code></td>
      <td>{{fx_minversion_inline("13")}}</td>
      <td>一种新的集合类型</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map">Map</a></code> 对象可以被迭代</td>
      <td>{{fx_minversion_inline("17")}}</td>
      <td>可以使用&nbsp;<code>for</code>-<code>of 迭代此类对象</code></td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map">Map 对象的方法</a></code></td>
      <td>&nbsp;</td>
      <td><code>forEach</code>, <code>entries</code>, <code>keys</code>, <code>values 方法</code></td>
      <td style="background:yellow;">正在讨论中</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set">Set</a>&nbsp;</code>对象可以被迭代</td>
      <td>{{fx_minversion_inline("13")}}</td>
      <td>一种新的集合类型</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set">Set</a></code>&nbsp;对象可以被迭代</td>
      <td>{{fx_minversion_inline("17")}}</td>
      <td>可以使用&nbsp;<code style="font-size: 14px;">for</code>-<code style="font-size: 14px;">of 迭代此类对象</code></td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set">Set 对象的方法</a></code></td>
      <td>&nbsp;</td>
      <td><code>forEach</code>, <code>entries</code>, <code>keys</code>, <code>values 方法</code></td>
      <td style="background:yellow;">正在讨论中</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a></code>&nbsp;对象可以被迭代</td>
      <td>{{fx_minversion_inline("13")}}</td>
      <td>可以使用&nbsp;<code style="font-size: 14px;">for</code>-<code style="font-size: 14px;">of 迭代此类对象</code></td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code>Array.of()</code></td>
      <td>{{fx_minversion_inline("25")}}</td>
      <td>&nbsp;</td>
      <td>?</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakMap">WeakMap</a></code></td>
      <td>{{fx_minversion_inline("6")}}</td>
      <td>一种新的集合类型</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakMap">weakmap.clear()</a></code></td>
      <td>{{fx_minversion_inline("20")}}</td>
      <td>&nbsp;</td>
      <td style="background:orange;">目前有争议</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy">Proxy</a></code></td>
      <td>{{fx_minversion_inline("18")}}</td>
      <td>&nbsp;</td>
      <td style="background:yellow;">正在讨论中</td>
    </tr>
    <tr>
      <td><span class="external text"><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp"><code>RegExp</code>&nbsp;sticky (y) 标识</a></span></td>
      <td>{{fx_minversion_inline("3")}}</td>
      <td>正则表达式的粘滞匹配</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN">Number.isNaN()</a></code></td>
      <td>{{fx_minversion_inline("16")}}</td>
      <td>&nbsp;</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code>Number.isFinite()</code></td>
      <td>{{fx_minversion_inline("16")}}</td>
      <td>&nbsp;</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code>Number.toInteger()</code></td>
      <td>{{fx_minversion_inline("16")}}</td>
      <td>&nbsp;</td>
      <td>?</td>
    </tr>
    <tr>
      <td><code>Number.isInteger()</code></td>
      <td>{{fx_minversion_inline("16")}}</td>
      <td>&nbsp;</td>
      <td>?</td>
    </tr>
    <tr>
      <td><code>Number.parseInt()</code></td>
      <td>{{fx_minversion_inline("25")}}</td>
      <td>&nbsp;</td>
      <td>?</td>
    </tr>
    <tr>
      <td><code>Number.parseFloat()</code></td>
      <td>{{fx_minversion_inline("25")}}</td>
      <td>&nbsp;</td>
      <td>?</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith">string.startsWith()</a></code></td>
      <td>{{fx_minversion_inline("17")}}</td>
      <td>&nbsp;</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith">string.endsWith()</a></code></td>
      <td>{{fx_minversion_inline("17")}}</td>
      <td>&nbsp;</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/contains">string.contains()</a></code></td>
      <td>{{fx_minversion_inline("17")}}</td>
      <td>&nbsp;</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/repeat">string.repeat()</a></code></td>
      <td>{{fx_minversion_inline("24")}}</td>
      <td>&nbsp;</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/is">Object.is</a></code></td>
      <td>{{fx_minversion_inline("22")}}</td>
      <td>&nbsp;</td>
      <td style="background:yellow;">正在讨论中</td>
    </tr>
    <tr>
      <td><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/imul">Math.imul</a></code></td>
      <td>{{fx_minversion_inline("20")}}</td>
      <td>类似C语言的32位整数乘法</td>
      <td style="background:rgb(0,158,115); color:rgb(240, 255, 240);">已达成共识</td>
    </tr>
    <tr>
      <td>新增的&nbsp;<code>Math</code>&nbsp;函数</td>
      <td>{{fx_minversion_inline("25")}}</td>
      <td><code>log10</code>, <code>log2</code>, <code>log1p</code>, <code>expm1</code>, <code>cosh</code>, <code>sinh</code>, <code>tanh</code>, <code>acosh</code>, <code>asinh</code>, <code>atanh</code>, <code>hypot</code>, <code>trunc</code>, <code>sign</code></td>
      <td>?</td>
    </tr>
  </tbody>
</table>
<h2 id="Firefox_.E8.BF.98.E6.9C.AA.E6.94.AF.E6.8C.81.E7.9A.84_ECMAScript_6_.E7.89.B9.E6.80.A7">Firefox 还未支持的 ECMAScript 6 特性</h2>
<ul>
  <li><code>is</code> 和 <code>isnt</code>&nbsp;运算符 {{obsolete_inline}}</li>
  <li>模块</li>
  <li>Symbols</li>
</ul>
<h2 id=".E7.9B.B8.E5.85.B3.E9.93.BE.E6.8E.A5">相关链接</h2>
<ul>
  <li><a href="http://www.ecmascript.org/">ECMAScript 官网&nbsp;</a></li>
  <li><a href="http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts">ECMAScript 6 规范草案</a></li>
  <li><a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=694100">Mozilla Harmony tracking bug</a></li>
  <li><a href="/zh-CN/docs/Web/JavaScript/ECMAScript_5_support_in_Mozilla">ECMAScript 5 support in Mozilla</a></li>
  <li><a href="http://kangax.github.io/es5-compat-table/es6" title="http://kangax.github.io/es5-compat-table">ECMAScript 6 support across browsers</a></li>
</ul>
恢复到这个版本