4 个回答

let 受作用域的影响。你的测试环境是在 chrome devtools 中使用,遇到这种情况只会是当前环境中已经申明了这个变量。可以输出 window.a 检查全局变量是否存在。

因此我推测是你原本在测试时用 var 声明了变量,清除日志后又想到用 let 声明该变量。但 devtools 的清除日志并不会清除之前声明变量,因此重新刷新一下页面即可。
image.png

let 和 const 在作用域内都只能声明一次,再次声明会报错。所以在 Console 里测代码,一般都加个 IIFE 包一下,比如

(() => {
    let a = 1;
})();

把 a 封装在一个 IIFE 的块级作用域里。下次再贴同样的代码(或稍做改动)测试时就不会报“already beed declared”了

最新浏览器控制台已经没有这个问题了

实际上 devtools 为了方便是允许 let 重复声明的,不过不能 var 和 let/const 混用
把第二行的 var 改成 let 就可以运行了

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