2014-11-06 3 views
2

Я читаю через красноречивый Javascript и увидел эту функцию:Как эта функция работает без установки параметра?

function multiplier(factor) { 
    return function(number) { 
    return number * factor; 
    }; 
} 

var twice = multiplier(2); 
console.log(twice(5)); 
// → 10 

Однако, я не в состоянии понять, как внутренняя функция присвоения переменной (5) для параметра номер? Красноречивый JS пытается объяснить это, но я не понимаю.

+1

После выполнения этой строки 'var double = multiplier (2);', Twice - это функция. 'дважды = функция (число) { номер возврата * 2; }; ' И когда вы выполните эту строку 'console.log (дважды (5)),' Номер будет иметь значение 5 и он вернется 10 – Gilsha

+1

@Gilsha - Положите это в ответ, и вы получите мой голос – myfunkyside

+0

Так что если дважды становится внутренней функцией, что происходит с переменной фактора? Он хранится в памяти или что-то еще? Это может быть очевидно, но не для меня ... – evu

ответ

1

Внутренняя функция - Возвращаемое значение of multiplier. Он не вызывается до console.log(twice(5));, где он явно передал значение 5.

+0

И в функции, которая является '5'? 'number' или' factor'? – myfunkyside

+1

номер, конечно: 'return function (number) {' – Quentin

+1

Да, конечно, «бесполезно в этой ситуации, не так ли? Если мы получим, как «просто» это работает, мы не будем спрашивать .. – myfunkyside