为什么可以在浏览器控制台重复用let声明同个变量?

如题,按理说同个作用域下不能重复用let声明相同变量,但是直接在控制台里又确实是可以的,差了点资料大概是因为暂时性死区导致的,但是具体不太能理解,谁能给我分析一下吗?

阅读 4.8k
3 个回答

算是 Chrome DevTools 的 Feature 吧。

可以看 https://stackoverflow.com/a/61795919 第一个回答,作者 @jmrk 是一名 V8 的开发者,讲了为啥对 let 特殊处理。

P.S. 暂时性死区与此无关,是另一回事儿。

不能用 let 重复声明不是运行时的错误,而是在语法检查时处理的。

在console,语法分析每次都只能看到一个 let ,于是抓不到这个错误。

如果你在 console 写 let a; let a;,或者一次输入一个比较长的包含这个错误的脚本,那么同样可以看到报错。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题