Sök…
Kedja uppdrag i var deklarationer.
Att kedja uppdrag som en del av en var
skapar oavsiktliga globala variabler.
Till exempel:
(function foo() {
var a = b = 0;
})()
console.log('a: ' + a);
console.log('b: ' + b);
Kommer att resultera i:
Uncaught ReferenceError: a is not defined
'b: 0'
I exemplet ovan, a
är lokala men b
blir global. Detta beror på utvärderingen från höger till vänster om =
operatören. Så koden ovan utvärderades faktiskt som
var a = (b = 0);
Rätt sätt att kedja var uppdrag är:
var a, b;
a = b = 0;
Eller:
var a = 0, b = a;
Detta kommer att se till att både a
och b
kommer att vara lokala variabler.
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow