2010-07-23 3 views
11

Ho trovato questo frammento di codice nei miei viaggi nella ricerca JSON:Che cos'è la notazione "?:" In JavaScript?

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

sto vedendo sempre di più della notazione ? e :. Non so nemmeno come sia chiamato a cercarlo! Qualcuno può indicarmi una buona risorsa per questo? (btw, so cosa significa !=).

+1

possibile duplicato di [javascript se alternativo] (http://stackoverflow.com/questions/1688337/javascript-if-alternative) –

+0

possibile duplicato di [Punto interrogativo in JavaScript] (http://stackoverflow.com/questions/1771786/domanda-mark-in-javascript) – Bergi

risposta

23

Si chiama Conditional (ternary) Operator. È essenzialmente un condensato se-else.

Quindi questo:

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

... è lo stesso di questo:

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

In realtà è CHIAMATO un operatore condizionale, ma è un operatore ternario. Un operatore ternario è qualsiasi operazione che richiede 3 ingressi. In molti contesti, tuttavia, l'operatore ternario è diventato sinonimo di condizionale poiché il condizionale è il più famoso o talvolta l'unico operatore ternario presente in quella lingua. Ad esempio, ++ - sono chiamati operatori unari, e + -/sono chiamati operatori binari, ecc. Ma questa è solo semantica, buona risposta, più 1. :) –

+1

@Razor - Bella aggiunta; dare anche un'occhiata alle specifiche ECMAScript 5 di [Conditional Operator (?:)] (http://ecma262-5.com/ELS5_Section_11.htm#Section_11.12). –

+0

Imparato qualcosa di nuovo, grazie Rasoio! –

10

che è chiamato il conditional operator:

condition ? expr1 : expr2 

Se condition è true, il operatore restituisce il valore di expr1; in caso contrario, restituisce il valore di expr2.

+0

+1 per nominare correttamente l'operatore ternario solo in Javascript. –

12

E 'l'operatore condizionale ternario - fondamentalmente,

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

diventa

a = condition ? 4 : 5; 
+0

Come puntatore Razor nella risposta accettata: In realtà è [l'operatore condizionale JS] (https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Conditional_Operator), che è l'unico operatore ternario in JS . –

2

Basta leggere in questo modo:

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

posto quello che mai ti piace in i 3 operatori.

Come molti l'ha paragonato a una struttura IF .. THEN, così è.