Chrome控制台:'let'和'var'之间的区别?

The*_*ith 6 javascript google-chrome var let google-chrome-devtools

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

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

在此输入图像描述

zzz*_*Bov 9

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

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

当你开始打字,自动完成检查的属性的父对象与其它语言结构,如完成沿function,forwhile.

如果控制台中没有内容,则父对象window将不具有您要查找的属性,因为let未添加该属性window.

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

> let foo = {bar: 'baz'};
> foo.b //autocompletes bar
Run Code Online (Sandbox Code Playgroud)

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