con javascript variables declaration

con - javascript function jstl



Redeclar una variable de javascript (6)

En this tutorial está escrito:

If you redeclare a JavaScript variable, it will not lose its value.

¿Por qué debería redeclarar una variable? ¿Es práctico en algunas situaciones?

gracias


¿Por qué debería redeclarar una variable?

No deberias. Crea un código confuso.

¿Es práctico en algunas situaciones?

No.


En general, se puede considerar un estilo incorrecto tener asignaciones de var después de otras declaraciones debido al problema de izar ( ver aquí ). Utilizando el "patrón var único" ( ver aquí ), las redeclaraciones solo podrían suceder como en el ejemplo de Google Analtyics de Steve Oliver. Refactorizaría el ejemplo anterior para:

var x, max = 100; // no further var declarations afterwards! for (x = 0; x < max; x++) { } alert(x); // redeclaration ''var x = "hello"'' doesn''t make any sense here // and would be complained about by JSLint/-Hint x = ''hello''; alert(x);

Sin embargo, una redeclaración puede tener sentido cuando se usan valores predeterminados para parámetros opcionales (que es de lo que se trata el ejemplo de Google Analytics, supongo):

function abc(param1) { var param1 = param1 || ''default value''; }


En javascript no existe un alcance de bloque, por lo que es recomendable volver a declarar una variable para fines de aclaración; esto hace un mejor código.

Por ejemplo:

for (var x=0; x< 100; x++) { } alert(x); //In most languages, x would be out of scope here. //In javascript, x is still in scope. //redeclaring a variable helps with clarification: var x = "hello"; alert(x);


No es más que un recordatorio de que si haces esto:

var x=5; var x; alert(x);

El resultado será 5.

Si vuelve a declarar la variable en algunos otros idiomas, por ejemplo, el resultado no estará definido, o NaN, pero no en javascript.


No pierde su valor debido a la Hoisting

var x = 5; var x; // this is same as var x; // undefined; x = 5;

Entonces, cuando dice "Si redeclara una variable de JavaScript, no perderá su valor".

Según el levantamiento, la (s) declaración (es), todas ellas, se mueven a la cima. Y luego la variable está asignada.

var x = 25; var x; // redeclare first time var x; // redeclare second time // is same as var x; // undefined var x; // Not sure if this happens, but doesn''t make a difference, it''s still undefined x = 25;

En cuanto a la practicidad, sucede a veces. Mire la respuesta de @steveoliver.


Se puede encontrar un ejemplo de redeclación de una variable en Google Analytics . Cuando el código de seguimiento de JavaScript es iniciado por el script de Google Analytics, declara o redeclara _gaq de esta manera:

var _gaq = _gaq || [];

En otras palabras, si _gaq ya está definido, _gaq se "redeclara" como sí mismo. Si no está definido, se declarará por primera vez como una matriz vacía.

Esto permite que el código de seguimiento de Google Analytics admita otros scripts que pueden necesitar usar la variable antes de que se inicie el código de Google Analytics. Como @xralf señaló, JavaScript lo permite.

La redefinición de una variable es útil en situaciones donde no se puede saber si la variable ya se ha definido.

Al redeclar una variable de forma condicional, como lo hace el código de seguimiento de Google Analytics, permite que una variable se origine de forma segura en más de un lugar.

En este ejemplo, podría ser seguro para otros códigos que usan la variable _gaq verificar también una variable predefinida _gaq . Si existe, sabe que puede usarlo. Si no existe, sabe que debe definirlo antes de intentar usarlo.