Защо 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 транспилира добре вашия код? Мисля, че е така, че вашият chrome все още не поддържа 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 phabricator. Все още го търся сега   -  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 Не тези, тези двете са свързани с async-await. Видях един, който изключително споменава точния проблем тук (или е в съня ми?). Поне аз не мога да намеря дуп на 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