迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

为什么全局变量在 JavaScript 中给出未定义的值

作者:迹忆客 最近更新:2023/03/10 浏览次数:

JavaScript 是最古老的编程语言之一。由于它是由浏览器编译和执行的,它的工作方式与 C 或 Java 等系统级语言有些不同。

JavaScript 编程语言的行为对于许多初学者来说可能有点奇怪。要完全理解 JavaScript 语言,你必须彻底理解该语言中的各种概念,例如事件循环、冒泡和捕获、调用堆栈等等。

在本文中,我们将学习一种称为提升的 JavaScript 编程语言的此类概念。在了解为什么全局变量会给出 undefined 值之前,让我们首先了解 JavaScript 中提升的概念。

在 JavaScript 中提升的概念以及为什么全局变量给出 undefined

托管是 JavaScript 中的一个概念,其中 JavaScript 代码中存在的所有变量声明都被取出并在编译时分配一个 undefined 值。同样,JavaScript 内部的所有函数声明都被取出并存储在全局范围内。

这称为变量提升。这与变量或函数范围是本地的还是全局的无关。

现在让我们了解托管的概念在 JavaScript 中是如何工作的,以及它如何将 undefined 值分配给 JavaScript 中的变量。在下面的代码示例中,我们定义了一个名为 abc 的全局变量和一个函数 a()

let abc;
function a(){
    console.log("This is a function...");
}
console.log(abc);
debugger
abc = 5;
console.log(abc);

输出:

undefined
5

全局变量 1

在这里,你是否注意到你可以在变量 abc 初始化之前使用它?你有没有想过这怎么可能?

这件事在其他编程语言中是不允许的。发生这种情况的原因是由于吊装。

上面的代码代表了第一个控制台语句。在这里,添加调试器对于查看 Chrome 开发工具中的变量状态很重要。

扫描 JavaScript 代码后,JavaScript 编译器扫描所有变量和函数,将它们添加到全局范围,并将 undefined 分配给 abc 变量。

然后 JavaScript 引擎开始逐行执行代码,一旦找到变量 abc,就会为其分配一个值,在本例中为 5。它会将 5 分配给全局范围内的变量 abc

下面的输出代表变量被赋值为 5 后的第二个控制台语句。

全局变量 2

这就是变量和函数提升概念的工作原理。这就是 JavaScript 中的全局变量给出 undefined 值的真正原因。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 PHP 中获取时间差的分钟数

发布时间:2023/03/29 浏览次数:183 分类:PHP

本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。

PHP 中的重定向

发布时间:2023/03/29 浏览次数:136 分类:PHP

本教程演示了如何将用户从页面重定向到 PHP 中的其他页面

PHP 分页

发布时间:2023/03/29 浏览次数:66 分类:PHP

本教程介绍如何在 PHP 中对数据库行进行分页

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便