Почему Babel анализирует IIFE стрелочной функции

Как я вижу из грамматики ES2015, это выражение недопустимо:

() => { console.log("hello"); } ();

Вам нужно хотя бы поставить скобки:

(() => { console.log("hello"); }) ();

Chrome не работает в первом примере с Uncaught SyntaxError: Unexpected token (

Но с Бабелем все в порядке. Почему?


person Elena Vilchik    schedule 17.12.2015    source источник
comment
Э-э, нет, где вы прочитали в грамматике, что это было недействительно?   -  person Bergi    schedule 17.12.2015
comment
Потому что babel прекрасно транспилирует ваш код? Я думаю, это скорее похоже на то, что ваш хром еще не поддерживает ES2015 (ES6), или вы не активировали расширения разработчика   -  person Icepickle    schedule 17.12.2015
comment
Если вы используете код непосредственно в консоли Chrome, он будет проанализирован, как если бы это был ES5. Babel загружает код .js через ajax и транспилирует его (таким образом, Babel понимает ES6 и переводит его в ES5).   -  person Mjh    schedule 17.12.2015
comment
Я почти уверен, что это дубликат, только я не могу его найти. Кто угодно?   -  person Bergi    schedule 17.12.2015
comment
@Bergi Я помню, я где-то это видел. Не могу вспомнить, является ли это проблемой в фабрикаторе Babel. Все еще ищу это сейчас   -  person PSWai    schedule 17.12.2015
comment
@Bergi Какой обман вы ищете - один для синтаксиса ES2015 или, может быть, больше подобный? (или тот, которого он сам обманывает)   -  person James Thorpe    schedule 17.12.2015
comment
Я думаю, лучше ответить на него, чтобы в будущем другие могли быть закрыты дублированные @Bergi   -  person Jai    schedule 17.12.2015
comment
@JamesThorpe, PSWai: я имею в виду SO-вопрос или ответ, в котором обсуждается, что круглые скобки не нужны для стрелочных функций.   -  person Bergi    schedule 17.12.2015
comment
@JamesThorpe: кажется, я перепутал этот с этот комментарий   -  person Bergi    schedule 17.12.2015
comment
@PSWai: кажется, я нашел это. Это тот, который вы помните?   -  person Bergi    schedule 17.12.2015
comment
@Bergi Не те, эти два связаны с асинхронным ожиданием. Я видел один, в котором исключительно упоминалась точная проблема здесь (или это во сне?). По крайней мере, я не могу найти обман на SO.   -  person PSWai    schedule 18.12.2015


Ответы (1)


Но с Бабелем все в порядке. Почему?

Потому что Babel глючит :-) См. https://phabricator.babeljs.io/T2118 и https://phabricator.babeljs.io/T2027. Если я правильно понимаю, это было исправлено в Babel 6 - это было довольно серьезное изменение.

person Bergi    schedule 17.12.2015