let 会报错, var 才能正常运行?

2020-04-09 18:39:38 +08:00
 Cielos
window.onload = function () {
var gogogo;
let btn1 = document.getElementById('btn1');

btn1.onclick = function () {
clearInterval(gogogo);
var gogogo = setInterval(function () {省略...})
}

各位好,我刚学 JS 没多久,跟着李立超的视频学的。
上面这段代码里,如果我把 var gogogo 改成 let,压根就没法运行,请问是什么原因啊?
还有 clearInterval()应该可以中止定时函数,但是并没有中止,重复点击依然有效,这又是什么情况?

PS: 李立超的教程是 2016 年录的,当时还没有 LET 吧,像我这样的初学者应该去哪里了解 LET 的详细用法呢?
3406 次点击
所在节点    JavaScript
26 条回复
kingthy
2020-04-10 16:42:46 +08:00
@Curtion 是同一个错误,ReferenceError,只是描述不一样,你把它看为第一种是编译期错误,第二种是运行期错误。比如第二种 function main() {
console.log(a)
let a = "1"
}
kingthy
2020-04-10 16:43:17 +08:00
怎么自动发布了,补上面:
kingthy
2020-04-10 16:44:07 +08:00
怎么自动发布了,补上面:方法定义后不执行是可以“编译”通过的
ourFEer
2020-04-10 17:39:59 +08:00
我是被头像吸引进来的
Cielos
2020-04-10 19:38:29 +08:00
非常感谢大家的回答!
theohateonion
2020-04-10 20:54:29 +08:00
@ccyu220 并不是 let 不允许重复声明,而是 18 楼说的死区问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/660894

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX