2015-09-24 3 views
4

Я изучаю код, и я пытаюсь понять функции и аббревиатуры высшего порядка. Я не понимаю, как эта часть кода работает, чтобы вернуть «true».Может кто-нибудь объяснить мне, как эта функция работает?

function greaterThan(n) { 
    return function(m) { return m > n; }; 
} 

var greaterThan10 = greaterThan(10); 

console.log(greaterThan10(11)); 

Спасибо за помощь.

+0

Я понимаю, т> п, I» m пытается понять, как значения присваиваются m и n. –

+2

Внутренняя функция запоминает свой контекст путем закрытия, поэтому функция знает значение n и m, которое вы прошли. – Sumeet

ответ

12

Функция greaterThan возвращает функцию при вызове. Возвращенная функция имеет доступ ко всем членам внешней функции даже после возвращения функции. Это называется closure.

function greaterThan(n) { 
    return function (m) { 
     return m > n; 
    }; 
} 

Когда следующая инструкция выполняется

var greaterThan10 = greaterThan(10); 

он превращается в

var greaterThan10 = function (m) { 
    return m > 10; 
}; 

Итак, greaterThan10 теперь функция и может быть вызвана как

console.log(greaterThan10(11)); 

сейчас , значение o f m - 11 и return 11 > 10; возвращается как true.

Подробнее о замыканиях:

How do JavaScript closures work?

Кроме того, я буду рекомендовать следующие большую статью всем разработчикам JS

http://dmitryfrank.com/articles/js_closures

Смежные вопросы