为啥我的 javascript 箭头函数在 Edge/IE 中不起作用?

Posted

技术标签:

【中文标题】为啥我的 javascript 箭头函数在 Edge/IE 中不起作用?【英文标题】:Why are my javascript arrow functions not working in Edge/IE?为什么我的 javascript 箭头函数在 Edge/IE 中不起作用? 【发布时间】:2020-05-20 18:49:34 【问题描述】:

我在 IE 和 Edge 中的 javascript 代码存在兼容性问题。它没有在我的类中正确检测箭头函数。

所以这对我来说在 Edge 中引发了一个错误,在一个类中:

class WebAPI
  constructor()

  replayCSV = () => 
    console.log("test");
  

这是 Edge 上的错误: Edge Error

它在 IE 上本质上是相同的错误,只是出于相同的原因在不同的箭头函数上出现错误。

我正在使用箭头函数来处理某些嵌套引用问题,标准的东西。

你可以在这里看到完整的代码,都是 WIP 的东西:https://github.com/moothyknight/HEG_ESP32/blob/master/HEG_WIFI_BLE_Lolin32/webDemo/HEGwebAPI.js

【问题讨论】:

IE 不支持箭头函数。 caniuse.com/#feat=arrow-functions IE 完全不支持箭头函数;如果你需要它们在 IE 中工作,你必须使用像 Babel 这样的编译器来为你将它们转换为 ES5。 Edge 确实支持箭头函数,但不支持类字段,仅支持类方法(您需要将字段放入构造函数方法中,例如this.replayCSV = ...)。所以你的选择是使用像 Babel 这样的编译器,完全避免 ES6 语法,或者不正确支持 IE/Edge。 根本不支持,如果您想减轻头痛,可以查看跨浏览器支持的转译。 “这不是功能,而是错误!等等,我没听错吧?” - IE 使用这个:caniuse.com/#search=arrow%20functions。 caniuse.com 是回答有关浏览器功能兼容性问题的绝佳来源 【参考方案1】:

箭头函数在IE、Safari等早期版本的浏览器中无法使用。所有ES6代码在这些浏览器版本上使用之前都应该使用babel或typescript进行转译。

【讨论】:

以上是关于为啥我的 javascript 箭头函数在 Edge/IE 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥当我使用箭头函数 onClick 时我的变量未定义?

为啥 JSX 道具不应该使用箭头函数或绑定?

为啥箭头函数名称必须是 const/let?

为啥我不能在初始化列表中使用箭头运算符?

为啥将箭头函数体包装在括号中

为啥我不能在箭头函数中访问“this”? [复制]