如题,按理说同个作用域下不能重复用let声明相同变量,但是直接在控制台里又确实是可以的,差了点资料大概是因为暂时性死区导致的,但是具体不太能理解,谁能给我分析一下吗?
如题,按理说同个作用域下不能重复用let声明相同变量,但是直接在控制台里又确实是可以的,差了点资料大概是因为暂时性死区导致的,但是具体不太能理解,谁能给我分析一下吗?
这是devtools的“特殊照顾”
如果能fq请看下面的 url
Rerunning code that declare let-variables no longer cause failures in DevTools console.
不能用 let 重复声明不是运行时的错误,而是在语法检查时处理的。
在console,语法分析每次都只能看到一个 let ,于是抓不到这个错误。
如果你在 console 写 let a; let a;
,或者一次输入一个比较长的包含这个错误的脚本,那么同样可以看到报错。
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答942 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
算是 Chrome DevTools 的 Feature 吧。
可以看 https://stackoverflow.com/a/61795919 第一个回答,作者 @jmrk 是一名 V8 的开发者,讲了为啥对
let
特殊处理。P.S. 暂时性死区与此无关,是另一回事儿。