2017-01-31 3 views
0

Ich lese Eloquent JS und auf das Kapitel über Funktionen der hohen Ordnung Ich habe Probleme, diesen Code zu verstehen.Wie ist diese Aussage ein Boolean

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) ; 
  • wie ist Zeile 4 eine Boolesche Aussage?
  • Wofür wird f in dieser Aussage verwendet?
+1

'console.log (f)' – epascarello

Antwort

0
  • Sein, weil im Inneren der inneren Funktion wird als typeof f(arg)typeof Boolean(0) aufgerufen wird.
  • f ist 0, die an den Konstruktor übergeben wird.
0

noisy(f) hier ist eine Funktion, die kehrt eine Funktion.

noisy(Boolean) gibt die Funktion:

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; 
}; 

Sie rufen dann die Funktion zurückgegeben, in Null übergeben. Sie sind also die Ausführung im Wesentlichen den folgenden Code:

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

Um Ihre Frage zu beantworten:

  • Linie 4 ist ein boolescher Ausdruck, weil Sie in einer Art geführt und aufgerufen Konstruktor
  • f ist eine Variable definiert durch verrauscht, dass für die Verwendung in der Funktion erfasst von 0 zurückgenommen wurde noise
+0

Danke, dass war eine großartige Erklärung, ich schätze es – Chris

+0

Froh, dass es geholfen hat. Ich würde es schätzen, wenn Sie die Antwort als beantwortet markieren könnten, damit ich einige StackOverflow-Reputation bekommen kann =) – SheepNine

+0

Will, danke für die Erinnerung. – Chris

Verwandte Themen