2016-07-10 22 views
1

Mich interessiert, zu welchem ​​Zeitpunkt eine Bedingung in einer If/Else-Anweisung ausgewertet wird.Zeitpunkt der Auswertung der Bedingung (Javascript)

Stellen Sie sich vor, es gibt das folgende Beispiel:

if (complex condition 1) { 
    do something 
} 
else if (complex condition 2) { 
    do something else 
} 
else if (complex condition 3) { 
    do something else 
} 
else { 
    do anything 
} 

Was will ich weiß, ist: nicht jeder der komplexen Bedingungen erhält vor der Zeit auf überprüfen, und die Dolmetscher execudes nur die codepart der Bedingung, die wahr ist oder beginnt es mit der ersten Bedingung, wenn es dazu kommt, und wertet nur die zweite Bedingung aus, wenn die erste falsch ist?

Ich bin interessiert in Bezug auf einige Optimierungen für Low-End-Mobilgeräte zu machen.

+2

Die zweite wird nur ausgewertet, wenn die erste falsch ist. Ich bin mir nicht sicher, was Sie mit "komplexer Bedingung" meinen, aber selbst mit etwas Einfachem wie 'if (x || y)' wenn x wahr ist, wird y nicht ausgewertet. Sie können dies selbst testen, indem Sie in die Bedingung einen Funktionsaufruf setzen und in der Funktion console.log() aufrufen. – nnnnnn

+0

gut aus Leistungsgründen Ich möchte vermeiden, dass Low-End-Mobilgeräte eine dieser komplexen Bedingungen im Voraus zu bewerten haben oder werden (= es sei denn, sie sind wirklich erforderlich). –

+0

JavaScript wertet den gesamten Code nur "wenn er da ist" aus. –

Antwort

3

Die Bedingungsklausel einer if-Anweisung wird ausgewertet, wenn die if-Anweisung im Ablauf der Ausführung erreicht wird. Wenn in Ihrem Beispiel die erste Bedingung true lautet, wird keine der anderen Bedingungen ausgewertet.

1

Wie "Shortcource_evaluation" sagt: "... das zweite Argument wird nur ausgeführt oder ausgewertet, wenn das erste Argument nicht ausreicht, um den Wert des Ausdrucks zu bestimmen."

Die Ausführung wird beendet, wenn eine wahre Aussage erreicht wird.

+1

Der Begriff "Kurzschluss" bezieht sich auf Auswertungen von Booleschen Ausdrücken mit '&&' und '||', nicht verschachtelten 'if' Anweisungen. –

+0

Ups, du hast recht, ich fasse zwei Konzepte zusammen – imazzara