Ich bin kürzlich auf einen Code gestoßen, der mich verwirrt hat über die Variablen mit Blockbereich, die mit dem Schlüsselwort let in einer Schleife deklariert wurden.

Betrachten Sie das folgende Code-Snippet:

for (let i = 0; i < 10; i++) {
  let i = 'hello';
  console.log(i);
}

Wie funktioniert die Neudeklaration der Variablen i hier? Ich dachte jedoch, Sie könnten Variablen mit Blockbereich innerhalb desselben Bereichs nicht erneut deklarieren.

0
Yousaf 18 Aug. 2020 im 19:47

2 Antworten

Beste Antwort

Warum tut

for(let fn = () => run; fn();) {
  let run = false;
}

Nicht arbeiten? Da jede Schleifeniteration einen eigenen Bereich hat, auf welchen Bereich bezieht sich run in der Deklaration? Um dies zu verhindern, liegen die Erklärungen in ihrem eigenen Geltungsbereich. Daher können Sie nicht auf Variablen innerhalb des Körpers im Kopf zugreifen. Dies ist in 13.7.4.8 angegeben.

0
Ry- 18 Aug. 2020 im 20:53

Wie wir hier die let Definition sehen können ...

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let

Die Anweisung let deklariert eine lokale Variable mit Blockbereich.

for (let i = 0; i < 10; i++) {
    //blah blah blah
    let i = 'Hello'
}

Ich denke, das entspricht einer do-while Schleife

let i = 0
do {
    // blah blah blah
    let i = 'Hello'
} while(i ++ < 10);

Wenn wir zur let - Definition zurückkehren, ist dies klar, da die let - Anweisung einen Blockbereich hat.

Ich hoffe, dies hilft, Ihr Problem zu lösen.

-1
superdev1994 18 Aug. 2020 im 16:59