Я читал через Eloquent JavaScript, когда я наткнулся на это в главе 5.:Объяснить «вы можете иметь функции, которые изменяют другие функции»
вы можете иметь функции, которые создают новые функции.
function greaterThan(n) { return function(m) { return m > n; }; } var greaterThan10 = greaterThan(10);
И у вас могут быть функции, которые изменяют другие функции.
function noisy(f) { return function(arg) { console.log("calling with", arg); var val = f(arg); console.log("called with", arg, "- got", val); return val; }; } noisy(Boolean)(0); //->calling with 0 //->called with 0 - got false
Мои вопросы:
- Как вышеуказанные два примера отличаются?
- Как noisy change Boolean?
Я думаю, что это просто плохо сформулировано. Я думаю, что смысл в том, что вы можете использовать обратные вызовы, передавая функцию другой функции. «Перемена» связана с тем, что она потребляет результат обратного вызова и модифицирует его. – zzzzBov
«Изменение других функций» представляется ошибочным, даже если оно пытается «просто» использовать концепцию работы; функция одна и та же. Это было бы лучше выражено как «И у вас могут быть функции, которые * используют * (путем * wrapping *) другие функции ..» – user2864740