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.
2 Antworten
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.
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.