为什么可以在 Chrome 的 devtools 控制台中重新声明“让”?(其他浏览器不允许。)

nic*_*ldi 1 javascript variable-declaration ecmascript-6 google-chrome-console

我正在学习 ES6 中引入的替代变量声明。现在,我了解到 'let' 变量声明是块范围的,虽然它可以更新,但不能在同一范围内重新声明。

我的第一个问题是:上述信息是否属实?我正在阅读 2020 年 4 月 2 日的一篇文章。事情可能已经改变了。

我的第二个问题是:如果上述信息属实,那么当我运行时,我的 Chrome 控制台是如何出现的

let greeting = 'hello';
Run Code Online (Sandbox Code Playgroud)

下面一行我重新声明它,例如

let greeting = 'say hi now';
Run Code Online (Sandbox Code Playgroud)

该值更改为“say hi now”,并且未报告任何错误。

我认为这与行尾的分号有关,但不确定。这里只是一个 JS 菜鸟。谢谢!

Phi*_*hil 5

这是Google Chrome 的特定功能

支持控制台中的 let 和 class 重新声明

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

在实验中,我发现 IE 11 和 Edge 的行为与 Chrome 相同,因为分别键入每个命令不会产生错误,但在单个评估中执行两者会产生错误。

另见https://bugs.chromium.org/p/chromium/issues/detail?id=1004193


其他实验表明 Firefox 和 NodeJS REPL 不提供这样的功能。