瀏覽器大戰(zhàn)的激烈一如既往,在WebKit、V8和Edge這三者無休止的爭斗中,為了跟上現(xiàn)代JavaScript的要求,它們都達到了重要里程碑。
WebKit背后的開發(fā)團隊宣布,它已經(jīng)對照Kangax兼容性表達到了對ES6(ES2015)的100%兼容性,這是首次獲得如此成就。WebKit是蘋果公司的Web瀏覽器Safari的基礎(chǔ)。他們最新的瀏覽器預(yù)覽版,Safari 4技術(shù)預(yù)覽版本身已經(jīng)達到了99%的兼容性。
Juriy Zaytsev(又名Kangax,即Kangax兼容性表的創(chuàng)始人)說,WebKit的最近進展有點意外:
他們已經(jīng)落后了很長的一段時間,去年一整年都處于落后。然后又突然迅速加速,走出了這樣的困境。我們最近收到了越來越多來自WebKit團隊的Pull Request顯示,他們正在添加大量的新特性。現(xiàn)在他們和Chrome幾乎同時達到了100%的兼容,不同的是Chrome在兼容上面已經(jīng)努力了很長時間,而WebKit是在最后一段時間突然發(fā)力,快速趕上。
另據(jù)報道,V8團隊(Chrome和 Node.js的JavaScript引擎),已經(jīng)實現(xiàn)了async/await。Microsoft是首個發(fā)布具有async/await特性的瀏覽器預(yù)覽版的公司, Node.js中V8的使用給了async/await在瀏覽器之外更寬廣的范圍。以前開發(fā)者可以使用TypeScript之類的轉(zhuǎn)換工具來提前在代碼中使用async/await,現(xiàn)在V8引擎已經(jīng)原生支持這種寫法。
Microsoft不甘示弱,已經(jīng)更新了他們的Edge瀏覽器預(yù)覽版來提供ES6模塊。ES6模塊的靜態(tài)特性使得瀏覽器可以快速執(zhí)行查找。微軟這樣介紹其好處:
ES6模塊的靜態(tài)特性使用嚴(yán)格的語法約束了所有全局聲明(如if語句、嵌套函數(shù)、eval等內(nèi)部不可包含import/export),所以所有模塊都可以在解析時進行檢查,而且在執(zhí)行的過程中不會發(fā)生改變。
此外,Edge預(yù)覽版也包括所有正處于提案狀態(tài)的ES2016特性(雖然只有兩個這樣的特性)。
WebKit還沒有實現(xiàn)ES6模塊。這個功能沒有在兼容性表中,Zaytsev說,因為“ES6模塊很難用自動化方式測試而且它的標(biāo)準(zhǔn)沒有最終確定”所以WebKit可以聲稱對Kangax兼容性表100%兼容,但是這不一定代表他們達到了100%的ES2015兼容。
這些兼容特性目前仍處于開發(fā)和測試階段,尚不清楚何時正式發(fā)布。
查看英文原文:WebKit, V8, and Edge Improve JavaScript Implementations