Page 222 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 222
function addThreeSquareAddFiveTakeSquareRoo ( x ) {
t
1 1 это совсем бестолковая функция, не так ли?
return Math . s qrt (Math . p ow ( x +З , 2 ) +5 ) ;
/ / ДО
const answer = ( a ddThreeSquareAddFiveTakeSquareRoot ( S ) +
addThreeSquareAddFiveTakeSquareRoot ( 2 ) ) /
addThreeSquareAddFiveTakeSqureRoot ( 7 ) ;
1 1 после
const f = addThreeSquareAddFiveTakeSquareRoo ;
t
const answer = ( f ( S ) + f ( 2 ) ) / f ( 7 ) ;
Обратите внимание, что в примере "после" мы не используем круглые скобки после
имени функции addThreeSquareAddFi veTakeSquareRoot. Сделав это, мы вызвали бы
функцию, и переменная f вместо того, чтобы стать псевдонимом addThreeSquareAd
dFiveTakeSquareRoot, содержала бы результат этого вызова. Затем, когда мы попы
5
тались бы использовать ее как функцию (например, f ( ) ), это привело бы к ошибке,
поскольку f не была бы функцией, а вызывать вы можете только функции.
Конечно, это совершенно надуманный пример, и в действительности встречает
ся не часто. Но это на самом деле происходит при применении пространств имен
(namespacing), что весьма распространено при разработке приложений для Node
(см. главу 20), например так.
const Money = require ( ' math-money ' ) ; / / require - функция Node для
/ / импорта библиотек
const oneDollar = Money . D ollar ( l ) ;
/ / или, если мы не хотим писать повсюду "Mone . D ollar " :
y
const Dollar = Money . D ollar;
const twoDollars = Dollar ( 2 ) ;
/ / обратите внимание : oneDollar и twoDollars - экземпляры того же типа
В данном случае эффект от применения псевдонимов (aliasing) не так уж и велик,
Mon y . Dollar сокращается до просто Dollar, что кажется достаточно разумным.
e
Т е перь, завершив умственную разминку, давайте перейдем к более энергичному
абстрактному размышлению.
Функции в массиве
Исторически это программное решение использовалось не очень широко, но его
популярность растет, а при определенных обстоятельствах оно чрезвычайно полез
но. Одно из его применений - реализация идеи конвейера (pipeline), когда есть на
бор индивидуальных этапов, которые мы хотим выполнять часто. Преимущество ис
пользования массивов в том, что вы можете изменять их в любое время. Необходимо
Переменные функций 225

