let和const变量是在我们到达块之前还是在到达块时被提升的

  • 本文关键字:const 我们 let 变量 javascript
  • 更新时间 :
  • 英文 :


我的问题是当我在块内声明let或const类型的变量时就像

//does JS setup a memory space for let a when we are here ?
{
//or when we are inside the block JS setup the memory space for let a ?
let a = 5; 
}

它是只有在我们到达街区时(在执行时(才会被吊起,还是会在一开始就被吊起?

因为当我在块外调用它时,错误与块内不同

console.log(a); ---> "Uncaught ReferenceError: a is not defined"
{
console.log(a); -----> "Uncaught ReferenceError: Cannot access 'a' before initialization"
let a = 5;
}

块外的错误就像一个真正不存在的变量一样

相同错误

console.log(a); ---> "Uncaught ReferenceError: a is not defined"
console.log(thisVariableDoesntExists); ---> "Uncaught ReferenceError: thisVariableDoesntExists is not defined"
{
let a = 5;
}

所以我的问题是,当我们在块内部时,或者当执行上下文开始创建阶段时,Javascript会为变量let a = 5设置内存空间吗?

因为在我看来,javascript只会在我们进入块时为let设置内存空间

免责声明:如果你没有清楚地理解我的问题,不要认为我的问题是为什么当我console.log(a)时,我没有得到";未定义的";喜欢var,但我得到了一个错误。这不是我的问题!

提前感谢所有的帮助者:(

所以我的问题是,当我们在块内部时,或者当执行上下文开始创建阶段时,Javascript会为变量let a=5设置内存空间吗?

老实说,我不知道这个问题的答案,但我想知道。。。这真的重要吗?对于任何主要的web应用程序,很可能对于大多数Javascript应用程序,您甚至不太可能需要考虑的后果,确切地说您的变量使用了多少内存。

Javascript是一种垃圾收集语言,而现代计算机功能强大,所以真正的答案是:在闭包中或闭包外生成任意多的变量。即使只是为了代码的可读性,也要制作变量,因为从实际意义上讲,它们没有成本。

相关内容

最新更新