We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在上一篇Javascript decorator 你搞得我好亂呀 中有提到根據 ECMAScript 的文件,async/await 是規範在 ECMA2017 (ES8) 而不是 ECMA2016 (ES7) 今天我就來試試看尋找為什麼大家都說是 ES7 的源頭吧。
首先我先 google: ES7 async/await 再來 google: ES8 async/await
可以看到網路上有些人說是 ES7 ,也有些人說 ES8。(但如果只用 async/await google的話,我查到的都是說 ES7)
接下來試著去 TC39 的文件中找找蛛絲馬跡吧!
在 tc39 async/await 中我們可以找到 async/await 的規格書從日期上是在 2016 1月的時候,但 ECMA2016 (ES7) 發布時間是在 2016 6月的時候。所以有可能是因為時間上接近所以大家都誤以為他是 ECMA2016 (ES7) 的標準嗎?
而且根據 TC39 process 中提到的,stage 3 的規格書基本上可以當作是最終版的規格書,除非有重大的 bug 或者錯誤,不然不會更改。所以根據 stage 3 的規格書去應用 async/await 是沒問題的。
竟然知道了規格書是在 2016/01 的時候出現,那就來看看 v8 以及 babel 是什麼時候加入特性的。或許因為他們加入的時間導致某部分的人以為 async/await 是 ECMA2016 (ES7) 的規範。
進入到 v8 的 github 在 commit 中搜尋 async await 應該就可以 v8 知道是什麼時候加入async/await的。
所以 commit message 真的不能亂寫呀
在 2016 5月時候的 commit 可以看到 v8 加入了 async/await [esnext] implement frontend changes for async/await proposal 。
同理,一樣到 babel 的 github 利用 commit 去搜尋。
驚人的是...... babel 早在2014的11月就把 async/await 實作了 Implement ES7 Async/Await 而且標題直接打上 Implement ES7 Async/Await,不過那時候連 ECMA2015 (ES6) 都還沒出來呀~ 所以你就是兇手!? (欸
這一次的經驗對實際開發並沒有太大的幫助,況且,是不是因為 babel 的 commmit 讓人誤以為 async/await 是ECMA2016 (ES7) 的規範,這單純只是我的猜測,真相或許不是這樣。
總之,感謝這麼多人的努力,讓我可以用方便的語法糖開發,至於他是什麼年份的規範,就不用花太多心思計較了。
以後有人跟你說 async/await 是 ES7 的,你可以大聲的跟他說「不~他是 ES8 的」。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
為什麼大家都說 async/await 是 ES7 的規範呢?
前言
在上一篇Javascript decorator 你搞得我好亂呀 中有提到根據 ECMAScript 的文件,async/await 是規範在 ECMA2017 (ES8) 而不是 ECMA2016 (ES7) 今天我就來試試看尋找為什麼大家都說是 ES7 的源頭吧。
萬事先 google
首先我先 google: ES7 async/await
再來 google: ES8 async/await
可以看到網路上有些人說是 ES7 ,也有些人說 ES8。(但如果只用 async/await google的話,我查到的都是說 ES7)
接下來試著去 TC39 的文件中找找蛛絲馬跡吧!
在 tc39 async/await 中我們可以找到 async/await 的規格書從日期上是在 2016 1月的時候,但 ECMA2016 (ES7) 發布時間是在 2016 6月的時候。所以有可能是因為時間上接近所以大家都誤以為他是 ECMA2016 (ES7) 的標準嗎?
而且根據 TC39 process 中提到的,stage 3 的規格書基本上可以當作是最終版的規格書,除非有重大的 bug 或者錯誤,不然不會更改。所以根據 stage 3 的規格書去應用 async/await 是沒問題的。
V8 以及 babel 是什麼時候加入 async/await 的特性呢?
竟然知道了規格書是在 2016/01 的時候出現,那就來看看 v8 以及 babel 是什麼時候加入特性的。或許因為他們加入的時間導致某部分的人以為 async/await 是 ECMA2016 (ES7) 的規範。
v8
進入到 v8 的 github 在 commit 中搜尋 async await 應該就可以 v8 知道是什麼時候加入async/await的。
在 2016 5月時候的 commit 可以看到 v8 加入了 async/await [esnext] implement frontend changes for async/await proposal 。
babel
同理,一樣到 babel 的 github 利用 commit 去搜尋。
驚人的是...... babel 早在2014的11月就把 async/await 實作了 Implement ES7 Async/Await 而且標題直接打上 Implement ES7 Async/Await,不過那時候連 ECMA2015 (ES6) 都還沒出來呀~ 所以你就是兇手!? (欸
結論
這一次的經驗對實際開發並沒有太大的幫助,況且,是不是因為 babel 的 commmit 讓人誤以為 async/await 是ECMA2016 (ES7) 的規範,這單純只是我的猜測,真相或許不是這樣。
總之,感謝這麼多人的努力,讓我可以用方便的語法糖開發,至於他是什麼年份的規範,就不用花太多心思計較了。
以後有人跟你說 async/await 是 ES7 的,你可以大聲的跟他說「不~他是 ES8 的」。
參考資料
The text was updated successfully, but these errors were encountered: