2010-07-23 18 views
11

me encontré con este fragmento de código en mis viajes en la investigación de JSON:¿Qué es la notación "?:" En JavaScript?

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

que estoy viendo cada vez más de la notación ? y :. ¡Ni siquiera sé cómo se llama para buscarlo! ¿Alguien puede señalarme un buen recurso para esto? (Por cierto, sé lo que significa !=).

+1

posible duplicado de [javascript if alternative] (http://stackoverflow.com/questions/1688337/javascript-if-alternative) –

+0

posible duplicado de [signo de interrogación en JavaScript] (http://stackoverflow.com/questions/1771786/question-mark-in-javascript) – Bergi

Respuesta

23

Se llama Conditional (ternary) Operator. Es esencialmente un if-else condensado.

Así que esto:

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

... es lo mismo que esto:

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

En realidad se llama operador condicional, pero ES un operador ternario. Un operador ternario es cualquier operación que toma 3 entradas. Sin embargo, en muchos contextos, el operador ternario se ha convertido en sinónimo de condicional ya que el condicional es el operador ternario más famoso o, a veces, el único presente en ese idioma. Por ejemplo, ++ - se llaman operadores unarios, y + -/se llaman operadores binarios, etc. Pero eso es solo semántica, buena respuesta, más 1. :) –

+1

@Razor - Agradable además; también eche un vistazo a la especificación ECMAScript 5 del [Operador condicional (?:)] (http://ecma262-5.com/ELS5_Section_11.htm#Section_11.12). –

+0

Aprendí algo nuevo, gracias Razor! –

10

Eso se llama la conditional operator:

condition ? expr1 : expr2 

Si es conditiontrue, la operador devuelve el valor de expr1; de lo contrario, devuelve el valor de expr2.

+0

+1 para nombrar correctamente al único operador ternario en Javascript. –

12

Es el operador condicional ternario - básicamente,

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

convierte

a = condition ? 4 : 5; 
+0

Al igual que el puntero Razor en la respuesta aceptada: en realidad es el [operador condicional JS] (https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Conditional_Operator), que es el único operador ternario en JS . –

2

Sólo lee así:

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

lugar lo que desee en los 3 operadores.

Como muchos lo han comparado con una estructura IF .. THEN, así es.

Cuestiones relacionadas