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