javascript - 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
解决方案
这是 Chrome 的一个显式特性,仅此而已。它正在为您处理事情,以使x
您在摆弄测试时不会遇到“已定义”的障碍。
控制台现在支持
let
和语句的重新class
声明。对于使用控制台来试验新 JavaScript 代码的 Web 开发人员来说,无法重新声明是一个常见的烦恼。
编辑:
我刚刚发现即将推出的Chrome 92const
也会增加对重新声明的支持!
这允许开发人员将代码复制粘贴到 DevTools 控制台中,以查看它是如何工作或试验的,对代码进行小的更改,并重复该过程而无需刷新页面。
const
以前,如果代码重新声明绑定,DevTools 会引发语法错误。
推荐阅读
- python - 如何为这个在每个阶段都有移动平均线的 df 创建一个 while 循环?
- cmake - CMake 设置测试目录
- mysql - 从两个多态表 Laravel 中查询数据
- server - UDP DNS 和 DHCP 测试本地服务器。欺骗?
- node.js - 如何只允许从 docker 容器发出请求到特定的 url?
- python - 烧瓶我试图添加一个占位符和一个必需的
- javascript - 扩展功能组件的替代方案
- php - 如何对如下编写的 PHP 代码进行去混淆处理?
- stripe-payments - 关闭 Stripe 验证错误消息
- entity-framework - 在实体框架中更新实体时执行操作