function multiplier(factor) {
return function(number) {
return number * factor;
};
}
var twice = multiplier(2);
console.log(twice(5));
// → 10
Я, если честно, боюсь понимать это, так как мне кажется, что тогда я забуду как работают функции в нормальных языках программирования, как C++ или Java...
Чтоа? Функция не может быть типом? Ты дурак? Он просто создаёт функцию возвращает её как переменную. В twice попадает ссылка на функцию, при обращении к ссылке ты попадаешь на данную функцию. Это называется полиморфизм - когда код может изменяться в процессе выполнения.