【问题标题】:Variable is jumping to a higher scope? [duplicate]变量正在跳到更高的范围? [复制]
【发布时间】:2018-06-04 14:37:11
【问题描述】:

几天前我注意到我的代码中有一个错误,但不知道为什么会发生。似乎在较低范围内定义的变量以某种方式跳到较高范围内。有人知道这里发生了什么吗?简化代码:

console.log(a) 

for(var k = 0; k < 5; k++)
    var a = 5 

console.log(a) 

第一个控制台日志总是打印 undefined 但是第二个控制台日志总是打印 5? 变量 a 不应该只存在于 for 循环的范围内,并且在 for 循环完成后从内存中清除吗?

【问题讨论】:

    标签: javascript node.js express memory scope


    【解决方案1】:

    var 定义的变量是“函数范围的”,因此它们可以在函数中的任何位置访问。 letconst 但是有“块范围”,它们的行为会像你期望的那样:

    {
      let a = 1;
      var b = 2;
    }
    
    console.log(a, b); // not defined, 2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 2015-08-21
      • 2017-03-26
      • 2022-09-23
      相关资源
      最近更新 更多