2010-10-07 11 views
6

Cuando ejecuto "var variable = true;" en cromo consola de recibo "indefinido" devolvió:"var variable" devuelve indefinido?

> var variable = true; 
undefined 

Pero cuando corro sin "var" devuelve true:

> variable = true; 
true 

¿Por qué se vuelve "indefinido" con "var"?

Es causa confusa porque esperaba que fuera verdad.

Respuesta

5

La primera es una declaración, mientras que la segunda es una expresión. Si bien no es la misma, es similar a las reglas de C: (?)

// A statement that has no value. 
int x = 5; 

// An expression... 
x = 10; 

// ...that can be passed around. 
printf("%d\n", x = 15); 
+0

¿Es válido el código js para usar "var variable = true"? o debería ejecutar "var variable; variable = true;"? –

+0

@ajsie - es válido, y ambas declaraciones son equivalentes. – Oded

+0

Sí, es un código válido. Puede confirmar esto evaluando 'variable' después de ejecutar la declaración. –

1

una cita devuelve el valor de la asignación, pero con var este retorno es "consumido"

2

var x = y; es una declaracióncuales no devuelve ningún valor En la consola WebKit JS, una declaración que no devuelve ningún valor mostrará undefined como resultado, p.

> if(1){} 
undefined 
> ; 
undefined 
> if(1){4} // this statement returns values! 
4 

La asignación es una expresión que devuelve el valor de la LHS. Eso significa que esta declaración de expresión tiene un valor de retorno, y esto se mostrará.

Cuestiones relacionadas