簡體   English   中英

適用於Chrome v41和ie11的Java中的意外令牌=>

[英]Unexpected token => in Javascript for chrome v41 and ie11

解決錯誤的快速方法是什么

意外令牌=>。

我在下面的代碼中編寫了代碼,它只能在chrome的較高版本中運行,而不能在較低版本的ie11中運行。

var result = aIndice.filter(obj => {
        return obj.Type === "E"
})

您使用的箭頭功能obj => { }在Internet Explorer 11中不起作用。您需要使用Babel之類的工具將ES6代碼編譯為ES5,或者只是避免使用任何現代功能。

您還可以這樣編寫函數:

var result = aIndice.filter(function(obj) {
    return obj.Type === "E"
})

箭頭功能是es2015的功能,因此它們將無法在較舊的瀏覽器上運行。 某些功能可以通過使用不同的polyfill來實現,例如modernizr ,但是箭頭功能是一種語言表達,因此無法進行polyfill。 您可以使用caniuse判斷哪些瀏覽器提供了哪些功能。

解決此問題的方法是使用babel之類的工具來編譯代碼。 要使用babel轉換腳本,您需要安裝npm和node.js ,然后啟動一個npm項目:

$ npm init 

並安裝我們需要的依賴項, babel-cli和一個預設,以使用babel-preset-env

$ npm install --save-dev babel-cli babel-preset-env

現在,您需要babel的設置文件,您可以在其中使用browserlist定義目標瀏覽器,因此創建一個名為“ .babelrc”的文件,並在其中寫入:

{
  "presets": [
    ["env", {
      "targets": {
        "ie": "11",
        "chrome": 41
      }
    }]
  ]
}

向package.json(通過調用npm init創建)中添加一個新的npm腳本,“ script.js”是源腳本,而“ script-transpiled.js”是輸出腳本。

"scripts": {
  "transpile": "babel script.js --o script-transpiled.js"
}

並致電

npm run transpile

現在,您的腳本將被轉換為新文件script-transpiled.js ,您可以在目標瀏覽器中運行它。 要處理大型項目,建議將babel-loaderwebpack一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM