2010-07-23 14 views
11

fand ich diesen Code-Snippet auf meinen Reisen in JSON Erforschung:Was ist "?:" Notation in JavaScript?

var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray; 

Ich bin mehr und mehr von der Notation ? und : sehen. Ich weiß nicht einmal, wie es heißt, nachzuschlagen! Kann mir jemand eine gute Quelle dafür nennen? (Übrigens, ich weiß was != bedeutet).

+1

möglich duplikat von [javascript wenn alternativ] (http://stackoverflow.com/questions/1688337/javascript-if-alternative) –

+0

möglich duplikat von [Fragezeichen in JavaScript] (http://stackoverflow.com/questions/1771786/question-mark-in-javascript) – Bergi

Antwort

23

Es heißt Conditional (ternary) Operator. Es ist im Wesentlichen ein kondensiertes Wenn-sonst.

dies also:

var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray; 

... ist die gleiche wie folgt aus:

var array; 
if (typeof objArray != 'object') { 
    array = JSON.parse(objArray); 
} else { 
    array = objArray; 
} 
+19

Tatsächlich wird es als bedingter Operator bezeichnet, aber es ist ein ternärer Operator. Ein ternärer Operator ist eine Operation, die 3 Eingaben benötigt. In vielen Zusammenhängen ist der ternäre Operator jedoch ein Synonym für bedingt, da der Konditional entweder der berühmteste oder manchmal der einzige ternäre Operator ist, der in dieser Sprache vorhanden ist. Zum Beispiel, ++ - werden unäre Operatoren genannt, und + -/werden binäre Operatoren genannt. Aber das ist nur Semantik, gute Antwort, plus 1. :) –

+1

@Razor - Nice addition; Sehen Sie sich auch die ECMAScript 5-Spezifikation des [Conditional Operator (?:)] (http://ecma262-5.com/ELS5_Section_11.htm#Section_11.12) an. –

+0

Etwas Neues gelernt, danke Razor! –

10

Das ist die conditional operator genannt:

condition ? expr1 : expr2 

Wenn conditiontrue ist, die Betreiber gibt das zurück Wert von expr1; Andernfalls wird der Wert expr2 zurückgegeben.

+0

+1 für die Benennung der einzige ternäre Operator in Javascript korrekt. –

12

Es ist der dreifach konditionalen Operator - im Grunde ,

if (condition) { 
    a = 4; 
} 
else { 
    a = 5; 
} 

wird

a = condition ? 4 : 5; 
+0

Wie Razor Zeiger in der akzeptierten Antwort: Es ist eigentlich der [JS bedingte Operator] (https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Conditional_Operator), der der einzige ternäre Operator in JS ist . –

2

einfach es wie folgt lesen:

result = (condition) ? (true value) : (false value); 

Platz, was immer Sie wollen in die 3 Betreiber.

So viele hat es mit einer IF .. THEN Struktur verglichen, so ist es.