[英]The for loop works on declaring the variable inside it but not in the global scope
[英]variable created with “let” in global scope vs variable created with “var” inside a loop
我試圖獲得JavaScript中的變量聲明的一些經驗。 在下面的代碼中,每當我嘗試使用var關鍵字在循環內定義變量時,它會拋出一個錯誤:
“未捕獲的SyntaxError:標識符'i'已經被聲明”。
而如果我使用“let”關鍵字(或根本沒有關鍵字),則沒有問題。 我知道在我不使用任何關鍵字的情況下,JavaScript在全局范圍內使用相同的變量並覆蓋它。 我也知道用“let”關鍵字創建的變量被認為是塊范圍,在函數外部用“var”關鍵字創建的變量被認為是全局變量。 但我不明白這種行為! 如果有人能夠對這個問題有所了解,我將不勝感激。
這段代碼:
let i = 78;
console.log(i);
for (var i = 0; i < 4; i++) {
console.log(i);
var insideloop = 100;
}
的console.log(ⅰ); 出現此錯誤:未捕獲的SyntaxError:標識符'i'已被聲明
但這個沒有問題,給出以下輸出:
let i = 78;
console.log(i);
for (let i = 0; i < 4; i++) {
console.log(i);
var insideloop = 100;
}
console.log(i);
結果:78 0 1 2 3 78
在全局范圍內的任何塊內使用var
聲明的變量不是該塊的本地變量(在您的情況下是其for
循環塊),但它們位於全局范圍內。
因此,在您的第一個示例中,您嘗試使用let
重新聲明已在全局范圍內聲明的變量i
。
for(var i =0;i<5;i++){} console.log(i); //i is in global scope
凡為let
如果你的情況下宣布任何阻止其限定的for循環塊。 它不在外面。
for(let i =0;i<5;i++){} console.log(i); //i is in global scope
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.