javascript - 即使啟用了實驗性 JS,ECMAScript 6 仍無法運作
我有最新的 Chrome 版本(45 以及正在使用的 Chrome Canary 版本 47),兩者都啟用了實驗性 JavaScript 標誌。我想使用 ECMAScript 6,但它不起作用。我不知道為什麼。是否有什麼技巧或其他標誌也必須啟用?
ECMAScript 6 的每個保留字(例如 import、class 或其他)在 Chrome 45 中都會拋出 「未捕獲的 SyntaxError:意外的保留字」,而在 Chrome Canary 中則會出現 「未捕獲的 SyntaxError:意外的標記 import」 錯誤。
我幾個月前問過這個問題,但沒有得到任何答案,只有一個“可能重複”的鏈接指向使用 ECMAScript 6,但這並沒有解決我的問題。
我想使用模組,因為我比起使用 CommonJS 的 require 更喜歡 ECMAScript 模組。而且我也喜歡類別的語法糖——程式碼看起來更好。
答案#1
模組在任何瀏覽器中尚未被原生支援。你需要使用像 Traceur 或 Babel 這樣的轉譯器。看看以下的其中一個例子來幫助你開始吧:
- 今天就選擇 ES6 模組吧!
- 深入了解 ES6:今天使用 Babel 和 Broccoli 的 ES6
- 使用 webpack 撰寫客戶端 ES6
至於類別,你可能可以原生使用它們,而不需要經過轉譯器。你可以在這裡查看相容性表,以了解哪些瀏覽器今天原生支援類別:
https://kangax.github.io/compat-table/es6/
截至目前,你可以看到大多數瀏覽器尚未原生支持類。然而,如果你使用 Babel 或 Traceur,那就不必擔心這個問題。
答案#2
在 script 標籤中添加 type="module"。這應該能解決你的問題。