Heim > Web-Frontend > Front-End-Fragen und Antworten > Was sind die ternären Operatoren in JavaScript?

Was sind die ternären Operatoren in JavaScript?

青灯夜游
Freigeben: 2023-01-04 09:34:01
Original
3330 Leute haben es durchsucht

Javascript hat nur einen ternären Operator „? ... :“, der für einfache Auswahlstrukturen verwendet werden kann. Die grundlegende Syntax lautet „Boolescher Ausdruck? Satz1: Satz2“; wenn der Wert von „Boolescher Ausdruck“ wahr ist, wird er ausgeführt Satz1, andernfalls wird Satz2 ausgeführt.

Was sind die ternären Operatoren in JavaScript?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, ECMAScript Version 5, Dell G3-Computer.

Ternärer Javascript-Operator

Wenn der ternäre Operator in Javascript zur Beurteilung verwendet wird, lautet die grundlegende Syntax: Ausdruck ? Satz1 : Satz2
expression ? sentence1 : sentence2

expression的值为真时执行sentence1,否则执行 sentence2, 请看代码

var b = 1,
       c = 1 
       a = 2;
   a >= 2 ? b++ : b--;
   b   // 2
   a < 2 ? c++ : c--;
   c   // 0
Nach dem Login kopieren

从上面代码中,我们暂时会认为三目运算符相当于if + else(下面再详聊)

 if(expression){ 
      sentence1;
   } else {
      sentence2;
   }
Nach dem Login kopieren

expression为真,即expression不为undefinedNaN0null的时候执行sentence1,否则执行sentence2

既然这样的功能和if相同,为什么还要使用它?首先,在逻辑多次判断的时候,三目运算符逻辑更简洁:

 expression1 ? sentence1 :
   expression2 ? sentence2 :
   expression3 ? sentence3 :
   ...
Nach dem Login kopieren

只要任意一个expressionN的判断为真,那么sentenceN立即执行,这个判断结束,后面的任何判断不再执行。而如果我们写成if-else

if(expression1){
      sentence1;
   } else if(expression2){ 
      sentence2;
   } else if(expression3){
      sentence3;
   } ...
Nach dem Login kopieren

这样书写逻辑看起来比较心累,所以在jquery和zepto源码中,我们会大量看到三目运算符的应用。

赋值

另一个经典的应用场景在于赋值,var param = expression ? value1 : value2,这个相信大家经常用到

 var b,
      c = 1;
   var a = b ? 2 : 1;
   a    // 1
   var a = c > 0 ? 2 : 1
   a   // 2
Nach dem Login kopieren

再谈判断

有一天写了这样的代码

 function xx(){
      var a = 1,
      b = 3;
      a < b ? return false : &#39;&#39;
  }
Nach dem Login kopieren

居然报错了! 为什么报错,我们会仔细看一下上面的多个判断

expression1 ? sentence1 :
   expression2 ? sentence2 :
   expression3 ? sentence3 :
   ...
Nach dem Login kopieren

只要有一个expressionN成立,就马上跳出。原因是什么呢? 我们可以猜想是因为三目运算符return了sentenceN,所以判断立即跳出。赋值的用法也一样,之所以报错的原因是

 if(expression){
      return (return 2);
   }
Nach dem Login kopieren

这样的写法肯定报错了。那么如果我们对上面的解释有疑问,我们可以用这样的代码来证明:

 var a = 1,
       b = 2;
   var c = b > 1 ? a++ : 0;
   c   // 1
Nach dem Login kopieren

c为什么是1,因为n++是在执行完表达式后再加1,如果return a++

Wannexpression ist wahr, sentence1 wird ausgeführt, andernfalls wird sentence2 ausgeführt. Bitte schauen Sie sich den Code an

rrreeeAus dem obigen Code werden wir Denken Sie vorübergehend, dass der dreiäugige Operator äquivalent zu if + else ist (weitere Details unten). rrreee

Wenn expression wahr ist, ist expression nicht undefiniert, NaN, 0, null, satz1 ausführen, andernfalls satz2 ausführen . 🎜🎜Da diese Funktion dieselbe ist wie wenn, warum sollte man sie verwenden? Wenn die Logik mehrmals beurteilt wird, ist die Logik des ternären Operators zunächst prägnanter: 🎜rrreee🎜 Solange das Urteil eines Ausdrucks N wahr ist, wird Satz N sofort ausgeführt, dieses Urteil endet und alle nachfolgenden Urteile sind nein länger ausgeführt. Und wenn wir es wie if-else🎜rrreee🎜 schreiben, erscheint es ermüdend, die Logik so zu schreiben, sodass wir in den Quellcodes von jquery und zepto viele Anwendungen des ternären Operators sehen werden. 🎜🎜🎜🎜Zuweisung🎜🎜🎜🎜Ein weiteres klassisches Anwendungsszenario ist die Zuweisung, var param = expression ? value1 : value2, ich glaube, Sie verwenden dies oft 🎜rrreee🎜🎜🎜Lass uns noch einmal verhandeln🎜🎜 🎜🎜 Eines Tages habe ich einen solchen Code geschrieben🎜rrreee🎜Es wurde tatsächlich ein Fehler gemeldet! ​​Warum wurde ein Fehler gemeldet? Was ist der Grund? Wir können vermuten, dass der ternäre Operator den Satz N zurückgibt, sodass das Urteil sofort herausspringt. Die Verwendung der Zuweisung ist die gleiche. Der Grund, warum ein Fehler gemeldet wird, ist, dass das Schreiben wie 🎜rrreee🎜 definitiv einen Fehler meldet. Wenn wir also Fragen zur obigen Erklärung haben, können wir Code wie diesen verwenden, um zu beweisen: Warum 🎜rrreee🎜c 1 ist, weil n++ nach der Ausführung des Ausdrucks 1 hinzufügt, wenn return a++ , zuerst zurückgeben und Addieren Sie dann 1, sodass c hier gleich 1 ist. 🎜🎜Weitere Kenntnisse zum Thema Programmierung finden Sie unter: 🎜Programmiervideo🎜! ! 🎜

Das obige ist der detaillierte Inhalt vonWas sind die ternären Operatoren in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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 Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage