Curtion
2020-04-10 14:49:33 +08:00
这是因为 let 暂时性死区问题,onclick 中调用 clearInterval 函数时会用到 gogogo 变量,此时因为使用了 let 所有存在 TDZ 问题,导致并不会向上级作用域寻找 gogogo 变量,所有会报 Cannot access '' before initialization 错误。
clearInterva 没有中止有两个原因,一是因为 onclick 中使用了 var 定义变量,每次点击时的 gogogo 都是新的,结果就是不但没有停止,每次点击时还新建了一个定时器;如果把 var 去后也无法停止,原因是虽然停止了定时器,但是又新建了一个定时器。
我感觉很奇怪的就是:
console.log(a)
let a = "1"
报的错误是:Uncaught ReferenceError: a is not defined
而:
function main() {
console.log(a)
let a = "1"
}
main()
报的错误是:Uncaught ReferenceError: Cannot access 'a' before initialization
我怎么感觉这是同一种错误....