Chrome 控制台:'let' 和 'var' 之间的区别?
Chrome console: difference between 'let' and 'var'?
我附上了一个动画 gif 来说明这种奇怪的行为。本质上,我的问题是 Chrome 控制台在同一范围内使用时是否会区别对待 var
和 let
?您会注意到,在声明/分配变量后,如果您尝试在控制台中键入该变量的名称,Chrome 会自动为您完成它,并显示一个包含您键入的内容的下拉列表。使用 let
s 时,情况并非如此。这是错误、功能,还是我遗漏了 JavaScript 中的 var
和 let
?
注意:我很清楚 let
在直接范围内生死。
var
defines a variable on the global scope, while let
仅在本地范围内定义它。最有可能的是,自动完成功能只在全局范围内查找目标。
当您在控制台中使用 var
时,它在全局范围内执行并将变量添加到 window
对象。
当您在控制台中使用 let
时,它在全局范围内执行,不会将变量添加到 window
对象。
当您开始键入时,自动完成功能会检查父对象的属性以完成其他语言结构,例如 function
、for
和 while
.
当控制台没有内容时,父对象是window
,不会有你要找的属性,因为let
没有添加属性 到 window
.
只要您有一个新的对象供自动完成完成,returns 的行为就会符合您的预期。
> let foo = {bar: 'baz'};
> foo.b //autocompletes bar
现在,综上所述,自动完成 没有理由 那样做。在许多方面,通过 let
在全局范围内定义的变量缺少自动完成功能可以被认为是 "bug" 值得 "fixing"。在我看来,这是适度令人惊讶的行为。
我附上了一个动画 gif 来说明这种奇怪的行为。本质上,我的问题是 Chrome 控制台在同一范围内使用时是否会区别对待 var
和 let
?您会注意到,在声明/分配变量后,如果您尝试在控制台中键入该变量的名称,Chrome 会自动为您完成它,并显示一个包含您键入的内容的下拉列表。使用 let
s 时,情况并非如此。这是错误、功能,还是我遗漏了 JavaScript 中的 var
和 let
?
注意:我很清楚 let
在直接范围内生死。
var
defines a variable on the global scope, while let
仅在本地范围内定义它。最有可能的是,自动完成功能只在全局范围内查找目标。
当您在控制台中使用 var
时,它在全局范围内执行并将变量添加到 window
对象。
当您在控制台中使用 let
时,它在全局范围内执行,不会将变量添加到 window
对象。
当您开始键入时,自动完成功能会检查父对象的属性以完成其他语言结构,例如 function
、for
和 while
.
当控制台没有内容时,父对象是window
,不会有你要找的属性,因为let
没有添加属性 到 window
.
只要您有一个新的对象供自动完成完成,returns 的行为就会符合您的预期。
> let foo = {bar: 'baz'};
> foo.b //autocompletes bar
现在,综上所述,自动完成 没有理由 那样做。在许多方面,通过 let
在全局范围内定义的变量缺少自动完成功能可以被认为是 "bug" 值得 "fixing"。在我看来,这是适度令人惊讶的行为。