javascript – Chrome控制台:’let’和’var’之间的区别?

我附上了一个GIF动画来说明这种奇怪的行为.从本质上讲,我的问题是Chrome控制台是否会对var进行处理,并且在同一范围内使用时会有所不同?您会注意到,在声明/分配变量后,如果您尝试在控制台中输入该变量的名称,Chrome会自动为您自动填充,显示包含您输入内容的下拉列表.使用let时,情况并非如此.这是一个错误,功能,还是有什么我缺少关于var的东西,让我们用JavaScript

注意:我很清楚让生命和在直接范围内死亡.

enter image description here

最佳答案
在控制台中使用var时,它将在全局范围内执行,并将该变量添加到窗口对象中.

在控制台中使用let时,它将在全局范围内执行,而不会将该变量添加到窗口对象中.

当您开始键入时,自动完成检查父对象以查找要与其他语言结构一起完成的属性,例如function,for和while.

当控制台中没有内容时,父对象是窗口,它不具有您正在查找的属性,因为let不会将属性添加到窗口.

只要有新的自动完成对象完成,行为就会恢复到您期望的状态.

> let foo = {bar: 'baz'};
> foo.b //autocompletes bar

现在,所有这些都表明,自动完成必须以这种方式行事.在许多方面,通过let在全局范围内定义的变量缺乏自动完成可被视为值得“修复”的“错误”.在我看来,这是一种中度令人惊讶的行为.

转载注明原文:javascript – Chrome控制台:’let’和’var’之间的区别? - 代码日志