ES6 arrow(=>)函数与IE不兼容?

时间:2016-12-08 17:47:39

标签: javascript angularjs

我在AngularJs应用程序中测试以下代码,它在Firefox中工作正常,但IE11会为箭头抛出语法错误:

myApp.run((EventTitle, moment) => {
  EventTitle.weekView = event => `${moment(event.startsAt).format('hh:mm')} event.title`;
});

对IE有用的语法是什么?

1 个答案:

答案 0 :(得分:1)

IE11不支持多种ES6功能,包括lambda函数和模板文字。

应该起作用的粗略对等物是:

myApp.run(function(EventTitle, moment) {
  EventTitle.weekView = function(event) {
     return moment(event.startsAt).format('hh:mm') + " " + event.title;
  };
});

但是,有些方法使箭头功能与常规功能的工作方式不同。例如,您需要关注this个关键字的使用情况。

或者,如果您使用像Babel这样的转换器(或像TypeScript这样的转换语言),您可以使用像原始代码这样的新语言功能,并自动生成将在不支持这些功能的浏览器中运行的JavaScript代码。