Хорошо, давайте попробуем понять это шаг за шагом. У нас есть:
(a => `Hello ES${a}`)(2015);
Мы знаем, что любую функцию стрелки из ES6 можно заменить нормальной функцией. Таким образом, сохраняя скобки на месте (те, которые должны остаться на месте), приведенный выше код эквивалентен:
(function (a) {
return `Hello ES${a}`;
})(2015);
Теперь это простое выражение для немедленного вызова функции . Функция выполняется сразу после ее создания, а не после ее анализа. Весь блок скрипта анализируется перед выполнением любого кода в нем. Кроме того, анализ кода не означает автоматически, что он выполняется, если, например, IIFE находится внутри функции, он не будет выполняться до тех пор, пока функция не будет вызвана. Итак, в вашем случае у нас есть немедленный вызов функции с параметром 2015
, возвращающий Hello ES2015
.
Вы можете узнать больше о IIFE здесь или здесь .
Ура!