javascript - 吊闭-混乱
问题描述
吊装:
console.log(h)
var h = 1
这会返回undefined
,因为声明被移到顶部,但值是在 之后分配的console.log()
,就像这样:
var h;
console.log(h)
h = 1
现在返回 1,这是不明白的,因为在我的理解中它应该与上面的完全相同
闭包:为什么在第一个示例中不能console.log()
作为函数访问全局变量?h
如果某人可以在这里帮助我,我会很高兴。谢谢你!
解决方案
确实这两种情况很相似,那么这里发生了什么?
我认为你有点被你的控制台愚弄了。无论如何,当您执行命令时,您的控制台总是会记录一些内容。您可以阅读这篇文章,以更好地了解您的控制台默认返回的内容,h=1;
并且var h=1;
.
为什么 console.log() 作为函数不能访问第一个示例中的全局 var h?: 它实际上是访问全局h
变量。但是由于还没有为 h 分配值,所以 console.log 返回undefined
,这基本上意味着h
变量存在,但它的值是未定义的。如果它没有找到h
变量,它会返回一个错误,说明h is not defined
这可能会令人困惑,但与undefined
推荐阅读
- php - 从 WooCommerce 结帐通知中更改“未选择运输方式...”
- ruby-on-rails - 您如何将格式错误的字符串转换为日期时间
- node.js - 如何根据一个标准按 Mongo 对文档进行排序?
- c# - 它不会将我重定向到控制器的索引
- excel - 使用 VBA 将公式插入特定单元格
- php - 使用 CURL 上传给定的文件和 POST-Date
- twilio - 在 Twilio 中终止 Pexip
- python - 如何在 Scatter3D 中绘制超平面?
- java - 如何通过在 android 中包含布局从线性布局调用 textview?
- linux - 如何在 Buildroot 中为 Moxa UPort 1110 USB 串口转换器配置驱动程序?