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