Kurzschlussauswertung in JavaScript – Ein umfassender Leitfaden
In der Programmierung bezieht sich die Kurzschlussauswertung auf das Verhalten, bis zu dem ein Ausdruck ausgewertet wird Ein Ergebnis ist bekannt und der Rest des Ausdrucks wird übersprungen. Dieser Mechanismus wird häufig in bedingten Anweisungen verwendet, um unnötige Berechnungen zu vermeiden.
Unterstützt JavaScript die Kurzschlussauswertung?
Ja, JavaScript unterstützt die Kurzschlussauswertung. Wie in den folgenden Beispielen gezeigt, sind && (AND) und || (OR)-Operatoren zeigen dieses Verhalten.
Beispiel:
Betrachten Sie den folgenden JavaScript-Code:
if (true || foo.foo) { // Passes, no errors because `foo` isn't defined. }
Live-Demo: https://jsfiddle.net/iayzejre/
Erklärung:
Das || Der Operator gibt sofort „true“ zurück, sobald der erste Operand (in diesem Fall „true“) als „true“ ausgewertet wird. Daher wird der Ausdruck übergeben, unabhängig davon, ob foo.foo definiert ist oder nicht, da der zweite Operand nicht ausgewertet wird.
Beispiel:
Betrachten Sie nun diesen Code:
if (false && foo.foo) { // Also passes, no errors because `foo` isn't defined. }
Live-Demo: https://jsfiddle.net/iayzejre/1/
Erklärung:
In ähnlicher Weise wertet der &&-Operator den zweiten Operanden nur aus, wenn der erste Operand als wahr ausgewertet wird . Da „false“ immer „false“ ist, schlägt die Bedingung sofort fehl und foo.foo wird nie ausgewertet.
Problemumgehung für andere Sprachen
Wenn Ihre Codierungssprache keine Kurz- unterstützt Für die Schaltungsauswertung gibt es eine mögliche Problemumgehung mithilfe ternärer Operatoren. Betrachten Sie dieses C#-Beispiel:
if (true ? true : foo.foo) { // Passes without compilation errors. }
In diesem Fall gibt der ternäre Operator sofort „true“ zurück, wenn der erste Operand (die wahre Bedingung) wahr ist. Bei „false“ wird der zweite Operand (der foo.foo-Ausdruck) ausgewertet. Allerdings ist dieser Workaround möglicherweise nicht für alle Szenarien geeignet und sollte mit Vorsicht verwendet werden.
Das obige ist der detaillierte Inhalt vonNutzt JavaScript die Kurzschlussauswertung in logischen Operatoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!