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