【问题标题】:Declaring JS variables using for loop [duplicate]使用 for 循环声明 JS 变量
【发布时间】:2021-12-22 15:46:52
【问题描述】:

当我通过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) 中的循环

这个问题之前已经回答过了,但被误删了,所以我把答案和答案一起重新发布。

【问题讨论】:

    标签: javascript loops scope


    【解决方案1】:

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

    就像你用v 名称声明变量,不管它是global scope 中的值,并在if statement 范围内声明一个名称为v 的变量,程序不会显示任何错误,因为两个变量不在范围相同

    例如:

    //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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 2015-03-25
      相关资源
      最近更新 更多