首页 > 解决方案 > 吊闭-混乱

问题描述

吊装:

console.log(h)
var h = 1

这会返回undefined,因为声明被移到顶部,但值是在 之后分配的console.log(),就像这样:

var h;
console.log(h)
h = 1

现在返回 1,这是不明白的,因为在我的理解中它应该与上面的完全相同

闭包:为什么在第一个示例中不能console.log()作为函数访问全局变量?h

如果某人可以在这里帮助我,我会很高兴。谢谢你!

标签: javascriptclosureshoisting

解决方案


确实这两种情况很相似,那么这里发生了什么?

我认为你有点被你的控制台愚弄了。无论如何,当您执行命令时,您的控制台总是会记录一些内容。您可以阅读这篇文章,以更好地了解您的控制台默认返回的内容,h=1;并且var h=1;.

为什么 console.log() 作为函数不能访问第一个示例中的全局 var h?: 它实际上是访问全局h变量。但是由于还没有为 h 分配值,所以 console.log 返回undefined,这基本上意味着h变量存在,但它的值是未定义的。如果它没有找到h变量,它会返回一个错误,说明h is not defined这可能会令人困惑,但与undefined


推荐阅读