Heim > Web-Frontend > js-Tutorial > Wie wirkt sich das Hoisting und Scoping von JavaScript-Funktionen auf das Überschreiben von Variablen aus?

Wie wirkt sich das Hoisting und Scoping von JavaScript-Funktionen auf das Überschreiben von Variablen aus?

Mary-Kate Olsen
Freigeben: 2024-12-24 03:02:13
Original
759 Leute haben es durchsucht

How Does JavaScript Function Hoisting and Scoping Affect Variable Overwriting?

Javascript Function Scoping und Hoisting: Ein tieferer Einblick

Ben Cherrys Artikel über Javascript Scoping und Hoisting stellt die Konzepte des Function Hoisting und des Variablen-Scopings vor . Um ihre Auswirkungen besser zu verstehen, schauen wir uns ein faszinierendes Beispiel an, das er liefert:

var a = 1;

function b() {
    a = 10;
    return;

    function a() {}
}

b();
alert(a);
Nach dem Login kopieren

Führen Sie diesen Code aus und Sie werden feststellen, dass er „1“ ausgibt, was möglicherweise rätselhaft erscheint.

Das Hochziehen von Funktionen ist ein entscheidendes Konzept, um Funktionsdeklarationen an den Anfang ihres Gültigkeitsbereichs zu heben. Dies bedeutet, dass der obige Code effektiv wie folgt umgeschrieben wird:

function b() {
  function a() {}
  a = 10;
  return;
}
Nach dem Login kopieren

Seltsamerweise funktioniert die Funktion innerhalb der Funktion, a(), ähnlich wie eine Variablendeklaration (var a = function () {};) . Bedenken Sie Folgendes:

var a = 1;

function b() {
  var a = function () {};
  a = 10;
  return;
}

b();
alert(a);
Nach dem Login kopieren

Beide Versionen liefern genau das gleiche Ergebnis.

Im Wesentlichen macht der Code Folgendes:

var a = 1;                 // Defines "a" in the global scope
function b() {  
   var a = function () {}; // Defines "a" in the local scope 
   a = 10;                 // Overwrites the local variable "a"
   return;      
}       
b();       
alert(a);                 // Alerts the global variable "a"
Nach dem Login kopieren

Der Schlüssel zum Erfolg ist, dass die Funktion Heben und Variable Scoping interagieren, um dieses Verhalten zu erzeugen. Die innere Funktion erstellt eine lokale Variable a, während die Funktionsdeklaration selbst die Funktion an die Spitze hebt. Dies führt letztendlich dazu, dass das global definierte a von Änderungen innerhalb der Funktion unberührt bleibt.

Das obige ist der detaillierte Inhalt vonWie wirkt sich das Hoisting und Scoping von JavaScript-Funktionen auf das Überschreiben von Variablen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage