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