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
Mary-Kate OlsenOriginal
2024-12-24 03:02:13798Durchsuche

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);

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;
}

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);

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"

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!

Stellungnahme:
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