Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erläuterung der Definition und Verwendung logischer Ausdrücke im JavaScript-Grundkurs

Ausführliche Erläuterung der Definition und Verwendung logischer Ausdrücke im JavaScript-Grundkurs

伊谢尔伦
伊谢尔伦Original
2017-07-19 10:29:381654Durchsuche

Logische Operatoren „&&“, „||“ und „!“ führen boolesche Operationen durch. Sie werden häufig zusammen mit relationalen Operatoren verwendet, um einen komplexeren Ausdruck zu bilden.

i. Logisches UND

Der Operator „&&“ kann auf drei verschiedenen Ebenen verstanden werden. Das einfachste Verständnis besteht darin, dass, wenn beide Operanden boolesche Werte sind, eine boolesche UND-Operation (AND) für zwei boolesche Werte ausgeführt wird. Nur wenn der erste und der zweite Operand wahr sind, wird „true“ zurückgegeben Der Operand ist falsch, dann wird „&&“ zurückgegeben, um zwei relationale Ausdrücke zu verbinden.

x == 0 && y == 0; //Gibt nur „true“ zurück, wenn x und y sind beide 0

Relationale Ausdrücke geben immer wahr oder falsch zurück, daher gibt „&&“ selbst bei dieser Verwendung auch wahr oder falsch zurück. Relationale Operatoren haben eine höhere Priorität als „&&“ (und „||“), sodass Ausdrücke wie dieser sicher geschrieben werden können, ohne dass Klammern erforderlich sind.


Der Operand „&&“ ist nicht unbedingt ein boolescher Wert. Denken Sie daran, dass einige Werte als „wahre Werte“ und „falsche Werte“ betrachtet werden können. (Wenn der falsche Wert lautet: false null undefiniert 0 -0 NaN und „“, sind alle und andere Werte, einschließlich aller Objekte, wahre Werte.) Die zweite Ebene des Verständnisses von „&&“ besteht darin, dass „&&“ eine boolesche UND-Operation (AND) für wahre und falsche Werte ausführen kann. Wenn beide Operanden wahr sind, wird ein wahrer Wert zurückgegeben; andernfalls ist mindestens ein Operand falsch. Jedes Mal, wenn in JavaScript ein boolescher Wert verwendet wird, behandelt die Ausdrucksanweisung ihn als wahren oder falschen Wert, sodass „&&“ tatsächlich nicht immer wahr und falsch zurückgibt. Dies ist jedoch keine große Sache.

Es ist zu beachten, dass der oben genannte Operator „wahren Wert“ und „falschen Wert“ zurückgibt, aber nicht erklärt, was der „wahre Wert“ oder „falscher Wert“ ist. Aus diesem Grund diskutieren wir Vertiefen Sie das Verständnis der dritten Schicht von „&&“. Der Operator berechnet zuerst den Wert des linken Operanden, dh er berechnet zuerst den Ausdruck auf der linken Seite von „&&“. Wenn das Berechnungsergebnis ein falscher Wert ist, muss das Ergebnis des gesamten Ausdrucks ein falscher Wert sein. „&&“ gibt also einfach den Wert der Operation auf der linken Seite zurück, ohne den Operanden auf der rechten Seite zu berechnen.

Dies ist wichtig, um zu verstehen, dass „&&“ möglicherweise nicht den richtigen Operanden berechnet. Im obigen Code ist der Wert der Variablen P null und wenn p.x berechnet wird, wird eine Ausnahme ausgelöst. Fehler, daher p.x
var o = {
    x: 1
};
 var p = null;
 o && o.x; //=>1 : 1:0是真值,因此返回值是o.x
 p && p.x //= null :p是假值,因此将其返回,而并不计算p.x

"&&" Verhalten wird manchmal als "Kurzschluss" (Kurzschluss) bezeichnet, wir können oft sehen, dass viele Codes dies ausnutzen, um Code bedingt auszuführen. Beispielsweise sind die folgenden beiden Codes gleichwertig

Wenn der Ausdruck auf der rechten Seite von „&&“ Nebenwirkungen hat (Zuweisungs-, Inkrementierungs-, Dekrementierungs- und Funktionsaufrufausdrücke), ist im Allgemeinen besondere Vorsicht geboten Seien Sie vorsichtig. Denn die Ausführung dieser Ausdrücke mit Nebeneffekten hängt vom Berechnungsergebnis der linken Bedienermaus ab.
 if (a == b) stop(); //只有a==b时才能调运stop()
 (a == b) && stop(); //同上

Obwohl „&&“ gemäß der zweiten und dritten Ebene des Verständnisses einige komplexe Ausdrucksoperationen ausführen kann, wird „&&“ in den meisten Fällen nur für die Berechnung von wahren und falschen Werten verwendet.

ii. Logisches ODER (||)

Der „||“-Operator führt eine boolesche ODER-Operation (OR) für zwei Operanden durch. Wenn einer der Operanden wahr ist, wird true zurückgegeben, wenn beide Operanden falsch sind, wird false zurückgegeben.

Obwohl der „||“-Operator meist nur eine einfache boolesche ODER-Operation wie „&&“ ausführt, weist er auch einige komplexere Verhaltensweisen auf. Er berechnet also zunächst den Wert des ersten Operanden , wird der Ausdruck auf der linken Seite zuerst ausgewertet. Wenn das Auswertungsergebnis wahr ist, wird der wahre Wert zurückgegeben.

ist dasselbe wie „&&“. Es sollte vermieden werden, dass der rechte Operand einige Ausdrücke mit Nebenwirkungen auf der rechten Seite enthält, es sei denn, Sie verwenden ausdrücklich Ausdrücke mit Nebenwirkungen auf der rechten Seite. Ausdruck.

Dieser Operator wird am häufigsten verwendet, um den ersten Ausdruck mit wahrem Wert aus einer Reihe alternativer Ausdrücke auszuwählen.

Diese häufige Verwendung erfolgt normalerweise im Hauptteil einer Funktion, um Standardwerte für Parameter bereitzustellen.
//如果max_width已经定义了,则直接使用它。赋值在preferences对象中查找max_width
//如果没有定义它,则使用一个写死的常量。
var max =max_width || preferences.max_windth || 500;

iii. Logisches NICHT (!)
//将o成功的属性复制到p中,并返回p
function copy(o, p) {
p = p || {}; //如果向参数p没有传入任何对象,则使用一个新创建对象。
//函数体内的主逻辑

Der „!“-Operator ist ein unärer Operator, der vor einem einzelnen Operanden steht. Sein Zweck besteht darin, den booleschen Wert des Operanden zu negieren.

Im Gegensatz zu den Operatoren „&&“ und „||“ konvertiert der Operator „!“ zunächst seinen Operanden in einen booleschen Wert und negiert dann den booleschen Wert. Das heißt, „!“ gibt immer wahr und falsch zurück. Darüber hinaus können Sie den booleschen Wert eines Werts mithilfe von zwei logischen NOT-Operationen ermitteln:

„!“ hat eine hohe Priorität und ist eng mit dem Operanden verknüpft. Wenn Sie p && q vergleichen möchten, benötigen Sie runde Klammern!(p && q). Der folgende Code:

Für jeden Wert von p und q gelten diese beiden Ausdrücke immer.
!(p && q) === !p || !q
 !(p || q) === !p && !q

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Definition und Verwendung logischer Ausdrücke im JavaScript-Grundkurs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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