Lexical Environment运行原理解析及JavaScript代码执行结果校验
结论
你的推导完全正确,代码最终运行结果确实是Michael Douglas,整个关于词法环境、变量提升、作用域查找的分析逻辑完全符合ECMAScript规范的定义。
核心正确点验证
你对几个关键规则的把握非常准确:
var声明的变量只绑定到最近的函数/全局作用域,不受块级作用域限制,因此块内的var name = 'Michael'本质是声明在printName函数作用域,赋值操作修改的也是函数作用域下的name变量let声明的变量严格绑定到块级词法环境,仅在当前块内可访问,出块后就从当前作用域链上脱离,因此printName函数作用域下无法访问块内的lastName,最终会向上查找到全局的Douglas- 执行上下文切换、词法环境的创建规则、作用域链向上查找的逻辑完全符合JS引擎的实际执行流程。
内容的提问来源于stack exchange,提问作者AngryJohn
相关产品推荐
相关产品推荐

