Vor einiger Zeit habe ich eine Frage zum Unterschied zwischen der Verwendung des Schlüsselworts var beim Definieren von Variablen beantwortet oder nicht. Lassen Sie es mich zusammenfassen.
1. Im Funktionsumfang sind mit var definierte Variablen lokale Variablen und ohne var definierte Variablen werden zu globalen Variablen.
Verwenden Sie die Variablendefinition:
var a = 'hello World'; function bb(){ var a = 'hello Bill'; console.log(a); } bb() //'hello Bill' console.log(a); //'hello world'
Verwenden Sie keine Variablendefinition:
var a = 'hello World'; function bb(){ a = 'hello Bill'; console.log(a); } bb() //'hello Bill' console.log(a); //'hello Bill'
2. Im globalen Bereich können mit var definierte Variablen nicht gelöscht werden und ohne var definierte Variablen. Dies bedeutet, dass implizite globale Variablen streng genommen keine realen Variablen sind, sondern Attribute des globalen Objekts können durch Löschen gelöscht werden, Variablen jedoch nicht.
3. Durch die Verwendung von var zum Definieren einer Variablen wird auch die Variablendeklaration vorangetrieben, d. h.
Verwenden Sie die Variablendefinition:
function hh(){ console.log(a); var a = 'hello world'; } hh() //undefined
Verwenden Sie keine Variablendefinition:
function hh(){ console.log(a); a = 'hello world'; } hh() //'a is not defined'
Dies ist die Deklaration von Variablen, die im Voraus mit var definiert wurden.
4. Wenn die Variable im ES5-Modus „strikt verwenden“ nicht mit var definiert ist, wird ein Fehler gemeldet.