Антон
Антон

Как работает эта функция? (Javascript lexical scoping)

function makeAddFunction(amount) {
function add(number) {
return number + amount;
}
return add;
}

var addTwo = makeAddFunction(2);
var addFive = makeAddFunction(5);
show(addTwo(1) + addFive(1));

откуда берется number? Когда появились единицы? ?

Яш
Яшка

Все просто. Функция makeAddFunction возвращает нам add, которая тоже является функцией. Это было очевидно. Что такое number? Это всего лишь аргумент для функции add. Он может быть необъявлен в функции makeAddFunction, т. к. предполагается, что функция add будет использоваться вне функции makeAddFunction. При этом, функция makeAddFunction, возвращая из себя функцию add через механизм замыканий оставляет в add ссылку на свой аргумент amount, который она принимает.

Отсюда легко видеть, что addTwo - это функция add со значением amout = 2, а addFive, соответственно, с 5. В итоге получаем (2 + 1) + (5 + 1) = 3 + 6 = 9.

Похожие вопросы
как работает эта функция?..
javascript не работает событие onclick в IE
javascript:(ошибка оператора прерывания функции)
JavaScript функция на Internet Explorer работает не так как надо.
Почему не работает javascript?
Javascript. Что делает функция Next? Функция Complete?
Как работает эта функция?
Сегодня перестал работать AVG. Запустить реально. Но все функции не работают. Кто что знает по этому поводу?
Параметры функции в javascript
Javascript. Помогите дописать функцию