Heim > Web-Frontend > js-Tutorial > Nutzt JavaScript die Kurzschlussauswertung in logischen Operatoren?

Nutzt JavaScript die Kurzschlussauswertung in logischen Operatoren?

Barbara Streisand
Freigeben: 2024-11-28 21:40:12
Original
706 Leute haben es durchsucht

Does JavaScript Utilize Short-Circuit Evaluation in Logical Operators?

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.
}
Nach dem Login kopieren

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.
}
Nach dem Login kopieren

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.
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage