2011-06-09 8 views
5

Estoy usando el último Firefox (4.0.1) y Firebug (1.7.2).¿Por qué las declaraciones de variables en la consola siguen siendo "indefinidas"?

Cada vez que ingreso una declaración de variable en la consola, se devuelve una advertencia "indefinida" en cursiva.

Entonces, por ejemplo, si ingreso "var x = 5;" entonces la respuesta es "indefinida", en lugar de "5".

Después, si ingreso "x" en la consola, se devuelve el valor apropiado de 5. Sin embargo, el error/advertencia es un poco molesto, realmente me gustaría saber la causa y la resolución, y si soy el único que experimenta esto.

Curiosamente, si no uso "var" sino que solo declaro el valor usando "x = 5", se muestra el comportamiento correcto y se devuelve "5" en la consola.

Respuesta

4

(Esto es sólo una suposición, no soy un experto en los detalles de las reglas del lenguaje de JavaScript o en Firebug.)

La retroalimentación de la consola que da es el resultado de la evaluación de la línea que ha introducido . Supongo que la declaración var x = ... es una declaración que no tiene un valor, mientras que la asignación simple (x = ...) es, en línea con el patrimonio C y la actitud "todo es una expresión" de los lenguajes funcionales, una expresión que evalúa el valor asignado.

+0

Creo que también. :) (+1) – R1234

+2

Estás en lo correcto; específicamente, [los enunciados de declaración no devuelven nada según §12.2 de la especificación, y las expresiones de asignación devuelven el valor asignado según §11.13.1] (http://stackoverflow.com/a/13180929/201952). – josh3736

+0

@ josh3736 Impresionante, gracias por encontrar eso! – delnan

0

Firebug está informando el resultado de evaluar la expresión, equivalente a:

typeof eval ("var x = 5;");
"indefinido"

typeof eval ("x = 5;");
"número"

Cuestiones relacionadas