2012-01-29 17 views
14

¿Puede la abreviatura de javascript para if-else regresar de una función? Si es así, ¿cómo funcionaría esto?Javascript taquigrafía if-else y return

por ejemplo. tengo esto:

if(boolean){ 
return; 
} 

y me gustaría escribir como este:

(value)? return; 

Chrome se queja de que el retorno es inesperado. ¿Hay alguna forma de escribir algo como esto para que sea válido?

+2

No es una abreviatura de if-else.Es una construcción completamente diferente, y una que no es apropiada para esta tarea. –

+3

Realmente triste que esto no funciona: 'someVal && return;'. La consola dice 'return token inesperado'. –

Respuesta

24

No, no puede hacer eso a menos que devuelva un valor. Por ejemplo, si su función tenía que devolver un valor que podría haber escrito:

return boolean ? 'foo' : 'bar'; 

Pero no se puede detener la ejecución de la función mediante la devolución de vacío utilizando el operador condicional.

1

que quiere hacer un ternary operator

que es la siguiente:

(bool) ? ifTrue : ifFalse; 

Por favor Nota: No se puede omitir la parte de otra persona de un operador ternario.

http://en.wikipedia.org/wiki/Ternary_operation

+0

No creo que entiendas cuál es la versión "larga" del código en realidad * lo hizo * ... – Shog9

+2

No, lo entiendo. Pero parece como si estuviera tratando de usar un operador ternario, y estaba tratando de obligarlo a comportarse de la manera que lo visualizó con su declaración "larga" original. Si él simplemente quisiera usar una instrucción sin sentido, podría haberlo dicho. * shrug * – Kristian

9

Si tiene intención de volver de la función en este punto en su ejecución independientemente de si la prueba se evalúa verdadera o falsa, puede utilizar,

return (value) ? 1 : 2; 

Pero si meramente desea regresar temprano cuando una prueba evalúa verdadero (por ejemplo, como una verificación de cordura para evitar la ejecución cuando los parámetros no son válidos), lo más corto que puede hacer es:

if (boolean) return; 
+2

Solo el segundo realmente se comporta de forma idéntica al primer ejemplo en la pregunta. Sin embargo, es ciertamente más corto: ¡una buena ilustración de cuán servilmente incluye los frenos y las nuevas líneas puede conducir al deseo de pegarse un tiro en el pie! – Shog9

+0

Buena edición @ Shog9, siempre me falta palabras. –

0

El "operador ternario" condicional (condition ? expression to evaluate when true : expression to evaluate when false) se utiliza a menudo para la asignación de variable condicional simple.

Si necesita:

if(x > 0) { 
    a = 10; 
}else{ 
    a = 30; 
} 

puede escribir:

a = (x>0)? 10 : 30; 

Usted puede pensar en él como una función simple, que tiene 3 parámetros (P1, P2, P3), si p1 es cierto que devuelve p2 y si p1 es falso, devuelve p3.

(p1)? p2 : p3; 

Y al igual que una función de este tipo, no hay manera que cause la función de los padres a devolver basado en la condición. Es no por lo tanto, una abreviatura de if/else.

3
if(boolean) return; 

Línea única, legible, perfectamente válida;