Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Объясните функцию с замыканием (https://javascript.ru/forum/misc/61641-obyasnite-funkciyu-s-zamykaniem.html)

vsenetak 27.02.2016 22:12

Объясните функцию с замыканием
 
Объясните, пожалуйста, как работает функция с замыканием.
В книге "Выразительный JS" есть такая функция:
function multiplier(factor) {
  return function(number) {
    return number * factor;
  };
}

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


Ни как не могу понять, что передается в параметр number, и куда должно пойти значение 5 из последней строчки?

рони 27.02.2016 22:26

Цитата:

Сообщение от vsenetak
что передается в параметр number, и куда должно пойти значение 5 из последней строчки?

пять и передаётся из последней строки

EmperioAf 27.02.2016 23:34

Цитата:

Сообщение от vsenetak (Сообщение 409498)
Объясните, пожалуйста, как работает функция с замыканием.
В книге "Выразительный JS" есть такая функция:
function multiplier(factor) {
  return function(number) {
    return number * factor;
  };
}

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


Ни как не могу понять, что передается в параметр number, и куда должно пойти значение 5 из последней строчки?

после присваивания
var twice = multiplier(2);


получается, что:
twice = function(number) {
    return number * 2;
  }

очевидно, что
twice(5) = function(number) {
    return number * 2;
  }(5)

и получается, что twice(5)=10


Часовой пояс GMT +3, время: 10:51.