任何在线或在YouTube上搜索以下内容之一:
let
,const
和var
之间的区别 ...毫无疑问将提到let
和const
是如何实现块作用域的,而var
是如何实现函数作用域的。这对我来说很有意义,但是我发现的任何资源都无法深入了解幕后实际情况,从而无法实现像块作用域这样的东西。据我了解,每次新函数调用都会创建一个新的执行上下文,并将其放置在调用堆栈上,并且执行上下文包含一个变量对象,而该变量对象又包含与该函数内部定义的变量相对应的属性。但是由于块不是功能(并且我想不会创建新的执行上下文),因此该块如何了解其中定义的内容?是否发生了类似IIFE的功能?
答案 0 :(得分:0)
在 Javascript 中有三个执行上下文来执行它们的代码。
因此, 您仍然使用具有块作用域的全局执行上下文,但词法环境将被更新以解析绑定。因此,块知道它内部定义了什么。