首页 > 解决方案 > 使用 for 循环声明 JS 变量

问题描述

let当我使用相同的变量名多次通过关键字声明变量时,我知道它显示错误Uncaught SyntaxError: Identifier 'variable name' has already been declared

例如 (1)*:

let v = "1";

let v = "1";

但是当我在一个循环中声明许多具有相同名称的变量时,我不知道为什么它没有显示相同的错误。

例如 (2)*:

for(let i = 0; i<=2; i++){

    let v = "1"

}

我已经知道有一个合乎逻辑的解释,但我不知道是什么

注意:假设在 JS 文件中声明 example(1) 中的前两个变量,并在另一个 JS 文件中创建 example(2) 中的循环

这个问题之前已经回答过,但被错误地删除了,所以我将它与答案一起重新发布。

标签: javascriptloopsscope

解决方案


循环的每次迭代都是一个新的范围。

就像你用 v名字声明变量而不考虑它的值并在范围内global scope声明一个 名字一样,程序不会显示任何错误,因为两个变量不在同一个范围内vif statement

例如 :

//glopal scope
let v = "1"
console.log(v) // output : 1

//if statement scope
if(true === true){
 let v= "2"
 console.log(v) // output : 2
}

//also in global scope after if statement scope 
console.log(v) // output : 1

所以循环也会发生同样的情况,因为循环的每次迭代都是一个新的范围。


推荐阅读