首页 > 解决方案 > Javascript让双重声明

问题描述

我知道让在 JS 中的变量不能被声明两次。但是当我在控制台中尝试以下代码时:

a = 1;
let a = 2;
let a = 3;
    .
    .
    .
let a = 100;

注意:它们是逐行运行的(如下面的屏幕截图所示)。版本是谷歌浏览器 91.0.4472.114

在此处输入图像描述

它总是有效,没有错误。这真的让我很困惑,为什么它可以正常工作?我知道控制台中发生的事情并不代表脚本中发生的事情。但我的问题是为什么这存在于控制台中?有什么原因吗,或者它可能是一个错误?

因为我假设 let 和 const 具有相同的声明行为,所以如果我使用 const 代替 let,这是毫无疑问的。

b = 1;
const b = 2;
const b = 3; //Uncaught SyntaxError: Identifier 'b' has already been declared

在此处输入图像描述

标签: javascriptdeclarationletgoogle-chrome-console

解决方案


这是 Chrome 的一个显式特性,仅此而已。它正在为您处理事情,以使x您在摆弄测试时不会遇到“已定义”的障碍。

它是在 Chrome 80 中添加的

控制台现在支持let和语句的重新class声明。对于使用控制台来试验新 JavaScript 代码的 Web 开发人员来说,无法重新声明是一个常见的烦恼。

编辑

我刚刚发现即将推出的Chrome 92const也会增加对重新声明的支持!

这允许开发人员将代码复制粘贴到 DevTools 控制台中,以查看它是如何工作或试验的,对代码进行小的更改,并重复该过程而无需刷新页面。const以前,如果代码重新声明绑定,DevTools 会引发语法错误。


推荐阅读