Buscar..


Encadenamiento de asignaciones en var declaraciones.

Las asignaciones de encadenamiento como parte de una declaración var crearán variables globales involuntariamente.

Por ejemplo:

(function foo() {    
    var a = b = 0;
})()
console.log('a: ' + a);
console.log('b: ' + b);

Resultará en:

Uncaught ReferenceError: a is not defined
'b: 0'

En el ejemplo anterior, a es local pero b vuelve global. Esto se debe a la evaluación de derecha a izquierda del operador = . Así que el código anterior realmente evaluado como

var a = (b = 0);

La forma correcta de encadenar asignaciones de var es:

var a, b;
a = b = 0;

O:

var a = 0, b = a;

Esto asegurará que tanto a como b sean variables locales.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow