对应视频 www.douyin.com/user/self?m…
问题
这是群里的同学提到的问题,问什么在js中的错误和控制台中不一样? 解析规则的改变,或者说暂时性死区的问题
Js 中实现,报错
控制台中实现,报错
解析
假设以下代码进行执行,此时 a是否在作用域中存在,是否可以访问,初始化或重新定义?
console.log(a)
let a = 10
function b(){
eval()
debugger
}
存在脚本作用域当中,无法访问,初始化或重新定义,此处可以使用eval进行查看
问题就出现在无法访问,初始化或重新定义上,对于脚本而言,这个问题出现了,解决就是,通常不会出现问题,但如果这个逻辑传递到控制台,性质就不一样了
比如我们使用了Map等初始化时可能会报错的初始化函数【只要报错就行,通常是属性初始化】
此时,按照通用规则,就会出现 无法访问
无法初始化 和无法重新定义的问题
这三个问题就形成了当前let/const刚出来的烂事,控制台里不能使用let/const
不过现在解决了,控制台里可以重新定义
但同样也会遇见刚开头遇见的问题,他们的解析规则发生了改变,报的错也就不一样了