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