javascript - Chrome 控制台 : difference between 'let' and 'var' ?

标签 javascript google-chrome google-chrome-devtools var let

我附上了一个动画 gif 来说明这种奇怪的行为。本质上,我的问题是 Chrome 控制台在相同范围内使用时是否会区别对待 varlet?您会注意到,在声明/分配一个变量后,如果您尝试在控制台中输入该变量的名称,Chrome 会自动为您完成它,并显示一个包含您输入的内容的下拉列表。使用 let 时,情况并非如此。这是错误、功能,还是我遗漏了有关 JavaScript 中的 varlet 的内容?

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

enter image description here

最佳答案

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

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

当您开始键入时,自动完成功能会检查父对象的属性以完成其他语言结构,例如 functionforwhile.

当控制台没有内容时,父对象是window,不会有你要找的属性,因为let没有添加window 的属性。

一旦您有一个新的自动完成对象要完成,行为就会恢复到您期望的状态。

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

现在,综上所述,没有理由让自动完成必须那样做。在许多方面,通过 let 在全局范围内定义的变量缺少自动完成功能可以被认为是一个值得“修复”的“错误”。在我看来,这是适度令人惊讶的行为。

关于javascript - Chrome 控制台 : difference between 'let' and 'var' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39397126/

相关文章:

javascript - 强制页面不向下滚动并保持 100% 窗口高度的 CSS 或 JS 解决方案

javascript - Phantom.js - 在警告框内获取文本

javascript - 为什么我不能将 Symbol 定义为构造函数?

jquery - 更改元素的颜色 Chrome 扩展

javascript - 文件显示在“源”选项卡中但不在“网络”中

javascript - 添加屏幕分辨率宽度>1028的背景图片

javascript - Chrome mousedown 和 mouseup 事件不再有效,其他浏览器正常

CSS - 自定义光标图像在 Chrome 中的视口(viewport)边缘附近恢复

javascript - 返回一个函数 Chrome Dev 工具

google-chrome - 如何找到 "Denying load of chrome-extension://"的来源