2017-01-31 2 views
0

Я читаю Eloquent JS и в главе о функциях высокого порядка. У меня возникли проблемы с пониманием этого кода.Как это утверждение является логическим

function noisy (f) { 
    return function (arg) { 
    console.log ("calling with" , arg) ; 
    var val = f(arg); 
    console.log ("called with" ,arg, "- got",val) ; 
    console.log(typeof f(arg)) 
    return val ; 
}; 
} 
noisy (Boolean)(0) ; 
  • , как это строка 4 логическое утверждение?
  • Для чего используется f?
+1

'console.log (f)' – epascarello

ответ

0
  • Его, потому что внутри внутренней функции, typeof f(arg) вызывается, как typeof Boolean(0).
  • f is 0, который передается в конструктор Boolean.
0

noisy(f) здесь это функция, которая возвращает функция.

noisy(Boolean) возвращает функцию:

function returned(arg) { 
    console.log("calling with", arg); 
    var val = Boolean(arg); 
    console.log("called with", arg, "- got", val); 
    console.log(typeof Boolean(arg)); 
    return val; 
}; 

Вы затем вызвать, возвращаемой функцию, передавая в ноль. Таким образом, вы, по сути, выполняя следующий код:

console.log("calling with", 0); 
var val = Boolean(0); 
console.log("called with", 0, "- got", val); 
console.log(typeof Boolean(0)); 

Чтобы ответить на ваш вопрос:

  • линия 4 представляет собой логическое выражение, потому что вы прошли в типе и вызывается его конструктор
  • е является переменной определяемый шумом, который фиксируется для использования в функции, возвращаемой шумом
+0

Спасибо, это было отличное объяснение. Я ценю это – Chris

+0

Рад, что это помогло. Я был бы признателен, если бы вы могли отметить ответ в ответ, так что я могу получить репутацию StackOverflow =) – SheepNine

+0

Будет, спасибо за напоминание. – Chris

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