Является ли анонимная функция в качестве параметра объявлением функции или выражением функции? - PullRequest
0 голосов
/ 27 мая 2020

Предполагается, что объявление функции - это оператор, в котором ключевое слово функции является первым словом оператора, например:

function() { console.log("foo") };

Предполагается, что выражение функции это, например, следующее:

для именованной функции

var func = function doSomething() { console.log("foo") };

для анонимной функции

var func = function() { console.log("foo") };

Что происходит с анонимной функцией, которая передается как параметр в следующем примере:

for (let i = 0; i < 5; i++) {
    setTimeout(function() { console.log(i); }, 200); 
};

Это объявление функции или это выражение функции , поскольку оно присваивается переменной-параметру setTimeout-метод WindowOrWorkerGlobalScope

1 Ответ

0 голосов
/ 27 мая 2020

Очевидно, что выражение функции

Из MDN

Выражение функции

Ключевое слово function может использоваться для определения функции внутри выражение.


Синтаксис

let myFunction = function [name]([param1[, param2[, ..., paramN]]]) {
   statements
};

Выражение функции очень похоже на выражение и имеет почти тот же синтаксис, что и объявление функции (подробности см. в описании функции). Основное различие между выражением функции и объявлением функции - это имя функции, которое можно не указывать в выражениях функций для создания анонимных функций. Выражение функции может использоваться как выражение IIFE (выражение с немедленным вызовом функции), которое запускается сразу после его определения. См. Также главу о функциях для получения дополнительной информации.



Объявление функции

Синтаксис

function name([param[, param,[..., param]]]) {
   [statements]
}
...