起吊和关闭-混乱

时间:2018-11-11 10:20:43

标签: javascript closures hoisting

吊装:

console.log(h)
var h = 1

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

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

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

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

如果某人可以在这里帮助我,我会感到非常高兴。 谢谢!

1 个答案:

答案 0 :(得分:0)

实际上这两个案例是相似的,那么这里发生了什么?

我认为您对控制台有所迷惑。无论如何执行命令时,控制台始终会记录一些内容。您可以阅读此Python2 docs,以更好地了解在执行h=1;var h=1;时控制台默认返回的内容。

在第一个示例中,为什么console.log()函数不能访问全局变量?: 它实际上访问全局h变量。但是由于尚未为h分配任何值,所以console.log返回undefined基本上意味着h变量存在,但其值未定义。如果找不到h变量,则会返回一条错误消息,提示h is not defined可能会引起混淆,但与undefined

不同