In diesem Artikel wird der Unterschied zwischen VAR und NO VAR in JavaScript erörtert. Der Umfang der variablen Deklarationen in JS basiert auf Funktionen. Daher sehen wir häufig, wie wir globale variable Verschmutzung vermeiden können.
(function () {// ...}) ();In einer Funktion sind Variablen mit Var und ohne VAR unterschiedlich. Es gibt VARs, die lokale Variablen deklarieren, und es gibt keine VARs, deklarierte globale Variablen, sodass Sie die Schnittstellen -Dinge nach außen freilegen können.
Wenn Variablen im globalen Bereich deklarieren, scheinen Var und Var gleich zu sein. Wir wissen, dass die deklarierten globalen Variablen die Eigenschaften von Windows sind. Unabhängig davon, ob sie gleich sind, entdecken wir den Unterschied durch die von ECMASCRPIT5 bereitgestellte Attributabfragemethode.
var ffff = 2; Fenster.fffa = 3; ffb = 4; this.ffc = 4; var fftx = Object.getownPropertyDescriptor (Fenster, 'ffff'); // Konfigurierbar: Falsch, aufgezählt: true, Wert: 2, beschreibbar: true var ffatx = Object.getownPropertyDescriptor (Fenster, 'fffa'); // Konfigurierbar: True, Enumerable: TRUE, Wert: 2, beschreibbar: true var fbbtx = Object.getownPropertyDescriptor (Fenster, 'fffa'); // Konfigurierbar: True, Enumerable: true, Wert: 2, beschreibbar: true var ffbtx = Object.getownPropertyDescriptor (Fenster, 'ffb'); // Konfigurierbar: True, Enumerable: TRUE, Wert: 2, beschreibbar: true var ffctx = Object.getownPropertyDescriptor (Fenster, 'ffc'); // Konfigurierbar: True, Enumerable: TRUE, Wert: 2, beschreibbar: true
Durch das obige stellten wir fest, dass es immer noch einen Unterschied gab. Wir haben das Löschen verwendet, um zu überprüfen, ob das Attribut mit Konfiguration FALSE nicht gelöscht werden kann. Das heißt, die Eigenschaften des durch die variablen VAR deklarierten globalen Objekts können nicht gelöscht werden. Wir werden auch feststellen, dass die Eigenschaften des durch die Funktionserklärung erstellten globalen Objekts nicht gelöscht werden können.
FFFF löschen; // kann FFFA nicht löschen; // kann löschen FFB löschen; // kann löschen FFC löschen; // kann löschen
Die Schlussfolgerung ist, dass es einen Unterschied zwischen dem Hinzufügen von VAR und der Deklaration globaler Variablen ohne VAR gibt.
Es ist legal und harmlos, eine Erklärung mit einer VAR -Erklärung wiederholt zu deklarieren. Wenn die Erklärung wiederholt wird und die Zuordnung vorgesehen ist, unterscheidet sich sie nicht von der allgemeinen Zuordnungserklärung. Wenn Sie versuchen, eine nicht deklarierte Variable zu lesen, meldet JS einen Fehler.
Die deklarierten Variablen oder internen Funktionen im Rahmen des JavaScript -Bereichs sind im Funktionskörper sichtbar. Das heißt, die Funktion ist möglicherweise bereits verfügbar, bevor sie definiert ist. Es gibt zwei Möglichkeiten, eine Funktion zu definieren, eine ist Funktionsdefinitionsausdruck und die andere ist Funktionserklärung.
// Funktionsdefinition Expression var fns = function () {// ...}; // Funktionserklärung Anweisung Funktion fns () {// ...}Die Funktionserklärungserklärung "wurde fortgeschritten" an die Spitze des externen Skripts oder des externen Funktionsbereichs, sodass eine auf diese Weise deklarierte Funktion durch den Code, der zuvor erneut angezeigt wird, aufgerufen werden kann. In Funktionsdefinitionsausdrücken ist die Deklaration der Variablen erweitert, die Zuordnung der Variablen ist jedoch nicht erweitert, so
(function () {testa (); // drucken testa testb (); // einen Fehler melden: Es wird aufgefordert, dass undefiniert keine Funktionskonsole ist. "testc";Wenn wir Variablen und Funktionen deklarieren, müssen wir natürlich grundlegende Spezifikationen einhalten, und Variablen und Funktionserklärungen müssen im Voraus sein.