В книге Eloquent Javascript Марина Хавербеке есть этот пример введение понятия функций высшего порядка:
function greaterThan(n) {
return function(m) { return m > n; };
}
var greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));
// → true
Я не совсем уверен, как это работает... возможно, отвечая на мой собственный вопрос, но вот как я это вижу:
Сначала в этой строке вызывается
greaterThan(n)
, присваивая свое значение переменнойgreaterThan10
:var greaterThan10 = greaterThan(10);
Это делает функцию, хранящуюся как
greaterThan10
, похожей на:function greaterThan(10) { return function(m) { return m > 10; }; }
Затем, когда вы вызываете
greaterThan10(11)
, вы вызываете функцию выше, которая переводится как:function greaterThan(10) { return function(11) { return 11 > 10; }; }
Следовательно, возвращение
True
в качестве результата как11 > 10
действительно верно.
Кто-нибудь может подтвердить, прав я или нет? Кроме того, если кто-то может предоставить дополнительную информацию и комментарии о том, как эти функции более высокого порядка работают в JavaScript, это было бы очень признательно.
n
становится переменной замыкания - person Arun P Johny   schedule 02.07.2015