javascript - 如果 let 没有被提升或者它们进入时间死区,那么为什么这个片段会抛出错误,当它可能只是使用全局引用时
问题描述
var a = 6;
{
console.log(a)
let a =55
}
当我执行此代码段时,我收到以下错误消息:ReferenceError:在初始化之前无法访问“a”
为什么 console.log(a) 没有给出 6 作为结果。
解决方案
嵌套块将创建一个新的块范围词法环境。
内部a
变量在该范围内声明,但在初始化之前访问,因此出现错误。
内部范围let a
声明覆盖了var a
声明,所以它是一个不同的变量,就好像你这样写:
var a = 6;
{
console.log(a2)
let a2 =55
}
.
推荐阅读
- javascript - 在创建指令 angularjs 之前如何检查 html 绑定
- character-encoding - SWI prolog,char_type,ascii / alnum,为什么这么多字符?如何解决?
- asp.net-mvc - MVC 5 Razor 中循环的索引字段的验证消息
- sql - 查找重叠日期并在 SQL Server 中排除它们?
- python - 我的发帖请求将在十小时后停止
- visual-studio-2015 - 如何将 TFS 变更集从分支 A 合并到分支 C。分支 A 被合并到分支 B 并且 A 和 C 之间没有合并关系
- tableview - Javafx TableView 单元格/模型更改/更新事件
- java - Mac上的Java机器人按键“shift”?
- javascript - 在jquery中获取类别过滤器颜色的方法
- c# - 为什么输入“byte[]”时会出现“System.Byte[]”?