Эта функция не вызывает функцию, она возвращает функцию.
Этот код создает новую унарную функцию, в которой исходный двоичный (больше чем) правый операнд оператора равен prebound для определенного значения.
В лямбда-исчисление это связывание известно как карри .
В Javascript привязка происходит потому, что предоставленное значение параметра x
в greaterThan
постоянно сохраняется в области действия внутренней функции (или «замыкания»), которая возвращается.
Итак, когда вы звоните:
var greaterThanTen = greaterThan(10);
теперь у вас есть новая функция (с именем greaterThanTen
), которая всегда сравнивает свой единственный параметр со связанным значением 10.
Таким образом:
greaterThanTen(9);
вернет false
.