2015-03-01 5 views
0

Рабочий фрагмент javascript ниже не включает проверку, поскольку он используется только для учебных целей. Однако я не понимаю поток событий после того, как переменная 'isBetween' определена в функции buildBoundDetector(). Почему передача числа через переменную «f» работает?выражение функции javascript внутри функции

function buildBoundDetector(lowerBound, upperBound) { 
    var isBetween = function(number){  
     if(lowerBound <= number && number <= upperBound){ 
      return true; 
     } 
     return false; 
    } 
    return isBetween; 
} 

var f = buildBoundDetector(1, 100); 
f(45); 
+2

'return isBetween;', он возвращает объект функции. Итак, 'f' является функцией' isBetween', и вы фактически передаете '45'' isBetween'. – thefourtheye

+2

Время, чтобы узнать о функциях более высокого порядка: https://en.wikipedia.org/wiki/Higher-order_function –

ответ

1

В JavaScript и многих других языках функции могут рассматриваться как значения. Таким образом, ваша первая функция возвращает значение, которое само является ссылкой на функцию. Затем возвращаемое значение функции применяется, как и любая другая функция, к аргументу 45.

2

buildBoundDetector() - это функция, которая возвращает функцию. В Javascript вы можете назначить функцию переменной. Вот что делает buildBoundDetector(). Он определяет анонимную функцию, затем присваивает ее isBetween, а затем возвращает isBetween. f установлен на результат buildBoundDetector(), который является этой функцией. Потому что f - это функция, которую вы можете назвать.

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