Почему этот синтаксис JavaScript не поддерживается в Google Chrome?

Я начал прослушиватель кликов JavaScript/jQuery следующим образом:

$("#test").on("click", () => {
   console.log("test");
});

Этот фрагмент кода отлично работает в Firefox, но в Chrome это, похоже, дает мне синтаксическую ошибку. Почему это, так как это выглядит как "ok" для меня.

Вы можете протестировать это быстро в консоли, выполнив

 var a = () => {return 0;}
 a();

В Firefox 27.0.1 это возвращает 0 В Chrome он возвращает SyntaxError: Unexpected token )

Ответ 1

жирная стрелка функция ES6 (теперь официально называется ECMAScript 2015). Он был введен в Firefox, но еще не в других браузерах (и особенно не полностью в V8, что было бы интересно для разработки nodejs/iojs).

В основном это сахар, вам лучше подождать, прежде чем использовать его.

Если вам нужна привязка к сфере (this - то же самое в вызове функции и в области, в которой была определена функция, мы говорим о "lexical this" ), а вместо

$("#test").on("click", () => {
   some code
});

вы можете просто сделать

$("#test").on("click", (function() {
   some code
}).bind(this));

Если вы этого не сделаете (как в вашем примере), просто выполните

$("#test").on("click", function() {
   console.log("test");
});