WebKit、V8 和 Edge 即将达到 100% 兼容 ES6 标准

  • David Iffland
  • 韩婷

2016 年 5 月 31 日

话题:JavaScript语言 & 开发

浏览器大战的激烈一如既往,在 WebKit、V8 和 Edge 这三者无休止的争斗中,为了跟上现代 JavaScript 的要求,它们都达到了重要里程碑。

WebKit 背后的开发团队宣布,它已经对照Kangax 兼容性表达到了对 ES6(ES2015)的 100% 兼容性,这是首次获得如此成就。WebKit 是苹果公司的 Web 浏览器 Safari 的基础。他们最新的浏览器预览版,Safari 4 技术预览版本身已经达到了 99% 的兼容性。

Juriy Zaytsev(又名 Kangax,即 Kangax 兼容性表的创始人)说,WebKit 的最近进展有点意外:

他们已经落后了很长的一段时间,去年一整年都处于落后。然后又突然迅速加速,走出了这样的困境。我们最近收到了越来越多来自 WebKit 团队的 Pull Request 显示,他们正在添加大量的新特性。现在他们和 Chrome 几乎同时达到了 100% 的兼容,不同的是 Chrome 在兼容上面已经努力了很长时间,而 WebKit 是在最后一段时间突然发力,快速赶上。

另据报道,V8 团队(Chrome 和 Node.js 的 JavaScript 引擎),已经实现了async/await。Microsoft 是首个发布具有async/await 特性的浏览器预览版的公司, Node.js 中 V8 的使用给了 async/await 在浏览器之外更宽广的范围。以前开发者可以使用 TypeScript 之类的转换工具来提前在代码中使用 async/await,现在 V8 引擎已经原生支持这种写法。

Microsoft 不甘示弱,已经更新了他们的Edge 浏览器预览版来提供ES6 模块。ES6 模块的静态特性使得浏览器可以快速执行查找。微软这样介绍其好处:

ES6 模块的静态特性使用严格的语法约束了所有全局声明(如 if 语句、嵌套函数、eval 等内部不可包含 import/export),所以所有模块都可以在解析时进行检查,而且在执行的过程中不会发生改变。

此外,Edge 预览版也包括所有正处于提案状态的 ES2016 特性(虽然只有两个这样的特性)。

WebKit 还没有实现 ES6 模块。这个功能没有在兼容性表中,Zaytsev 说,因为“ES6 模块很难用自动化方式测试而且它的标准没有最终确定”所以 WebKit 可以声称对 Kangax 兼容性表 100% 兼容,但是这不一定代表他们达到了 100% 的 ES2015 兼容。

这些兼容特性目前仍处于开发和测试阶段,尚不清楚何时正式发布。

查看英文原文WebKit, V8, and Edge Improve JavaScript Implementations


感谢徐川对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

JavaScript语言 & 开发