Ricerca…


Concatenamento di assegnazioni nelle dichiarazioni var.

Concatenare assegnazioni come parte di una dichiarazione var creerà accidentalmente variabili globali.

Per esempio:

(function foo() {    
    var a = b = 0;
})()
console.log('a: ' + a);
console.log('b: ' + b);

Risulterà in:

Uncaught ReferenceError: a is not defined
'b: 0'

Nell'esempio precedente, a è locale ma b diventa globale. Ciò è dovuto alla valutazione da destra a sinistra dell'operatore = . Quindi il codice sopra effettivamente valutato come

var a = (b = 0);

Il modo corretto di concatenare le assegnazioni di var è:

var a, b;
a = b = 0;

O:

var a = 0, b = a;

Ciò assicurerà che sia a che b saranno variabili locali.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow