Zoeken…
Ketenopdrachten in var-aangiften.
Chaining-toewijzingen als onderdeel van een var
aangifte zullen onbedoeld globale variabelen creëren.
Bijvoorbeeld:
(function foo() {
var a = b = 0;
})()
console.log('a: ' + a);
console.log('b: ' + b);
Zal resulteren in:
Uncaught ReferenceError: a is not defined
'b: 0'
In het bovenstaande voorbeeld is a
lokaal maar wordt b
globaal. Dit komt door de evaluatie van rechts naar links van de operator =
. Dus de bovenstaande code is eigenlijk geëvalueerd als
var a = (b = 0);
De juiste manier om var-toewijzingen te ketenen is:
var a, b;
a = b = 0;
Of:
var a = 0, b = a;
Dit zorgt ervoor dat zowel a
als b
lokale variabelen zijn.
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow