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

Why can 'let' be re-declared in the devtools console in Chrome? (Other browsers don’t allow it.)

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

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

我的第二个问题是:如果上面的信息是真的,那我的Chrome控制台怎么会出现,当我运行

let greeting = 'hello';

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

let greeting = 'say hi now';

改成'say hi now'不报错

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

这是一个Google Chrome specific feature

Support for let and class redeclarations in the Console

The Console now supports redeclarations of let and class statements. The inability to redeclare was a common annoyance for web developers who use the Console to experiment with new JavaScript code.

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

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


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