2010-07-23 5 views
11

Je trouve ce bout de code dans mes voyages dans la recherche JSON:Qu'est-ce que la notation "?:" En JavaScript?

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

Je vois de plus en plus de la notation ? et :. Je ne sais même pas comment on l'appelle pour le chercher! Quelqu'un peut-il me signaler une bonne ressource pour cela? (btw, je sais ce que != signifie).

+1

duplication possible de [javascript si alternative] (http://stackoverflow.com/questions/1688337/javascript-if-alternative) –

+0

duplication possible de [point d'interrogation dans JavaScript] (http://stackoverflow.com/questions/1771786/question-mark-in-javascript) – Bergi

Répondre

23

C'est ce qu'on appelle un Conditional (ternary) Operator. C'est essentiellement un if-else condensé.

donc ceci:

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

... est la même que celle-ci:

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

En fait, il est appelé un opérateur conditionnel, mais c'est un opérateur ternaire. Un opérateur ternaire est une opération qui prend 3 entrées. Dans de nombreux contextes, cependant, l'opérateur ternaire est devenu synonyme de conditionnel puisque le conditionnel est soit le plus célèbre ou parfois le seul opérateur ternaire présent dans cette langue. Par exemple, ++ - sont appelés opérateurs unaires, et + -/sont appelés opérateurs binaires, etc. Mais c'est juste de la sémantique, bonne réponse, plus 1. :) –

+1

@Razor - Nice add; Jetez également un coup d'œil à la spécification ECMAScript 5 de [Conditional Operator (?:)] (http://ecma262-5.com/ELS5_Section_11.htm#Section_11.12). –

+0

J'ai appris quelque chose de nouveau, merci Razor! –

10

Ce qu'on appelle le conditional operator:

condition ? expr1 : expr2 

Si condition est true, la l'opérateur renvoie le valeur de expr1; sinon, il renvoie la valeur expr2.

+0

+1 pour nommer correctement le seul opérateur ternaire en Javascript. –

12

Il est l'opérateur conditionnel ternaire - essentiellement,

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

devient

a = condition ? 4 : 5; 
+0

Comme pointeur Razor dans la réponse acceptée: C'est en fait l'opérateur [JS conditionnel] (https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Conditional_Operator), qui est le seul opérateur ternaire dans JS . –

2

Il suffit de lire comme ceci:

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

place ce que jamais vous aimez dans les 3 opérateurs.

Comme beaucoup l'a comparé à une structure IF .. THEN, il en est ainsi.

Questions connexes