浏览器大战的激烈一如既往,在 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 )关注我们。
评论