2016-12-08 8 views
-3

私はAngularJsアプリケーションに次のコードをテストしています、それはFirefoxで正常に動作しますが、IE11は矢印の構文エラーがスローされます。ES6 arrow(=>)関数はIEと互換性がありませんか?

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

IEのために働くだろう構文でしょうか?

+0

IE11ではサポートされていません。 [This](http://caniuse.com/#search=%3D%3E)は、さまざまなブラウザでサポートされているものとサポートされていないもののかなり良いリソースです。 –

+3

'function(){}' –

+1

いいえ、矢印関数aren ' IEでサポートされています。 ES6コードをES5にコンパイルするには、[Babel](https://babeljs.io/)を使用します。 – 4castle

答えて

0

IE11では、ラムダ関数やテンプレートリテラルなど、いくつかのES6機能がサポートされていません。動作するはず

ラフ同等です:

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

しかし、矢印関数は通常の関数と同じように動作しないで、いくつかの方法があります。たとえば、thisキーワードの使用を監視する必要があります。

Babel(またはTypeScriptのような翻訳言語)を使用すると、元のコードのような新しい言語機能を使用して、その機能をサポートしていないブラウザで動作するJavaScriptコードを自動的に生成できます。

+0

あなたはまだ矢印機能を持っています! –

+0

@MattBurland:いいキャッチ。 – StriplingWarrior

+0

また、[テンプレートリテラル文字列](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)も使用していますが、これらもES6であり、IEではサポートされていません。 – 4castle

関連する問題