Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 变量正在跳转到更高的范围?_Javascript_Node.js_Express_Memory_Scope - Fatal编程技术网

Javascript 变量正在跳转到更高的范围?

Javascript 变量正在跳转到更高的范围?,javascript,node.js,express,memory,scope,Javascript,Node.js,Express,Memory,Scope,几天前我注意到我的代码中有一个bug,不知道为什么会发生。似乎在较低范围内定义的变量正以某种方式跃升到较高范围。有人知道这里发生了什么吗?简化代码: console.log(a) for(var k = 0; k < 5; k++) var a = 5 console.log(a) 控制台日志(a) 对于(var k=0;k

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

console.log(a) 

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

console.log(a) 
控制台日志(a) 对于(var k=0;k<5;k++) 变量a=5 控制台日志(a) 第一个控制台日志总是打印未定义的日志 但是第二个控制台日志总是打印5?
变量a不应该只存在于for循环的作用域中,并且在for循环完成后从内存中清除吗

var
定义的变量是“函数作用域”,因此可以在函数中的任何位置访问它们
和常量具有“块作用域”,但它们的行为将与您期望的一样:

{
  let a = 1;
  var b = 2;
}

console.log(a, b); // not defined, 2

var
定义的变量是“函数作用域”,因此可以在函数中的任何位置访问它们
和常量具有“块作用域”,但它们的行为将与您期望的一样:

{
  let a = 1;
  var b = 2;
}

console.log(a, b); // not defined, 2