Что делает этот функциональный блок кода стрелки ES6? - PullRequest
0 голосов
/ 15 января 2019
(a => `Hello ES${a}`)(2015);

Приведенный выше код возвращает Hello ES2015, но я не могу понять, как здесь работают литералы шаблона с функцией стрелки.

Ответы [ 4 ]

0 голосов
/ 15 января 2019

Хорошо, давайте попробуем понять это шаг за шагом. У нас есть:

(a => `Hello ES${a}`)(2015);

Мы знаем, что любую функцию стрелки из ES6 можно заменить нормальной функцией. Таким образом, сохраняя скобки на месте (те, которые должны остаться на месте), приведенный выше код эквивалентен:

(function (a) {
    return `Hello ES${a}`;
})(2015);

Теперь это простое выражение для немедленного вызова функции . Функция выполняется сразу после ее создания, а не после ее анализа. Весь блок скрипта анализируется перед выполнением любого кода в нем. Кроме того, анализ кода не означает автоматически, что он выполняется, если, например, IIFE находится внутри функции, он не будет выполняться до тех пор, пока функция не будет вызвана. Итак, в вашем случае у нас есть немедленный вызов функции с параметром 2015, возвращающий Hello ES2015.

Вы можете узнать больше о IIFE здесь или здесь .

Ура!

0 голосов
/ 15 января 2019

Это вызов IIFE (немедленное выражение функции), это полезно для запуска функции, когда вам это нужно.

На самом деле, используя функции стрелок (лямбда-функции) (a => Hello ES $ {a} )(2015); a является параметром, и все лямбда-функции по умолчанию (без фигурных скобок) возвращают следующий оператор.

Это похоже на то же поведение с оператором if, когда вы не определяете блок с фигурными скобками. Э.Г.

if ( value === 'isFuture?')
  return 'Everyday it is'

Проверьте серию YouDontKnow, https://github.com/getify/You-Dont-Know-JS.

0 голосов
/ 15 января 2019

Это то же самое, что и функция автоматического выполнения: function(a) { return 'hello ES'+a}(); Но аргумент здесь 2015 И это возвращение "привет ES2015"

0 голосов
/ 15 января 2019

Это IIFE (выражение для немедленного вызова функции).

Определяет анонимную функцию, которая принимает параметр a и возвращает объединенную строку Hello ES со значением a.

a => `Hello ES${a}`

/* is equivalent to:

   function(a) {
     return 'Hello ES' + a
   }
*/

Затем он запускает эту функцию, применяя значение 2015 в качестве параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...