JavaScript 变量提升是什么?2025年3月17日 | 阅读 3 分钟 众所周知,变量声明是任何编程语言(如 C 语言、C++ 等)的基本且重要的方面。然而,JavaScript 有一个叫做“变量提升”的微妙特性,它可能将看似完美的声明变成一个隐藏的 bug。 变量提升在 JavaScript 中,变量提升是一种默认行为,即在执行程序代码之前,所有变量声明或函数声明都会被移到作用域的顶部。然而,这可以被认为是一种优势,因为所有函数和变量声明都会被放置在其作用域的顶部,无论它们在整个程序中的任何位置声明,甚至无论它们是全局声明还是局部声明。 由于 JavaScript 变量提升的概念,我们甚至可以在程序代码中定义函数定义之前调用一个函数。 简单来说,我们可以说在 JavaScript 中,我们可以在声明变量和函数之前使用它们,因为如上所述,JavaScript 编译器会在执行代码之前将所有变量和函数的声明移到其作用域的顶部,这样就不会出现任何错误。JavaScript 编译器在代码执行前,将所有变量和函数的声明移到其作用域顶部的这个概念就叫做变量提升。 注意:需要记住的重要一点是,在 JavaScript 中,只有函数声明和变量声明会被提升,而不是初始化。让我们来理解一下这究竟是什么 变量声明和初始化的顺序通常是这样的: 1. 声明 -> 2. 初始化/赋值 -> 3. 使用 ![]() 示例 但正如我们所知,JavaScript 允许我们同时声明和初始化变量。这是最常见的模式之一。 输出 ![]() 注意:另一个需要记住的重要一点是,在后台,JavaScript 会先声明变量、函数,然后再初始化它们。然而,未声明的变量在 JavaScript 中直到为其赋值的代码执行之前都不存在。因此,当为任何未声明的变量赋值时,在赋值代码执行时,它们会被转换为全局变量。所以我们可以说所有未声明的变量都是全局变量。示例 程序解释 在上面的程序中,我们使用 `function` 关键字创建了两个名为“codeHoist();”和“fun();”的函数。在“codeHoist();”的定义中,我们使用 `let` 关键字声明了变量“b”并将其赋值为 50。我们还有另一个变量“a”,我们将其声明为未声明并为其赋值 11。 在“fun();”函数的定义中,我们只是打印了两个变量的值。 在调用函数“fun();”时,它将打印我们在函数“codeHoist();”的定义中未声明的变量“a”的值,但它不会打印我们使用 `let` 关键字声明的变量的值。这是因为变量“a”的作用域被 JavaScript 本身更改为全局(或者我们可以说变量“a”被转换为全局变量),所以函数“fun();”能够打印变量的值。但是,函数“fun();”无法打印变量“b”的值,因为它使用了“let”关键字进行声明,因此其作用域被限制在函数定义内,对于任何外部函数都不可用。 输出 ![]() 下一主题什么是原生 JavaScript |
? JavaScript 函数是一段代码,它由一组指令组成,用于执行特定任务。函数也可以被视为可以在整个程序中反复使用的代码块,它...
5 分钟阅读
如果你想理解 JS 的行为方式,理解这些基础知识至关重要。你将能够更有效地解决问题,因为你将理解它们为何不起作用,这将帮助你从初级晋升到...
阅读 3 分钟
文本转粒子溶解效果 JavaScript & CSS 在本文中,我们将了解如何使用 JavaScript & CSS 创建文本转粒子溶解效果的示例。粒子溶解效果用于在 Canvas 元素上创建动态、交互式、可配置的粒子动画,该...
阅读 6 分钟
如果你知道如何在 JavaScript 代码中设置密码,那么理解如何切换密码的可见性就变得容易了。在这里,在本节中,我们将学习如何通过实现...
阅读 3 分钟
focus 方法用于 HTML 字段,当用户需要将焦点集中在特定区域时。它用于用户界面标签或输入标签。此 JavaScript 方法用于网页中的多个输入字段,而用户不会...
阅读 3 分钟
indexedDB 数据库显示来自表或数据库的数据。它用于从数据库中获取关键信息、值和所有内容。有以下方法和函数用于从 javascript indexedDB 读取数据。读取对象存储的键内容。读取对象存储的...
阅读 6 分钟
在 JavaScript 中替换字符串通常很困难。使用 string.replace() 技术更改每个出现项仍然可能很棘手。当涉及到换行符和制表符时,删除所有空格可能很费力。幸运的是,JavaScript 的 string.replace() 函数支持正则表达式。该方法...
阅读 3 分钟
? JavaScript 可用于创建客户端图像映射。图像映射是网页上的一张图片,具有指向其他页面的多个链接。这些链接称为热点。图像映射用于导航不同的链接到其他页面或在...
阅读 3 分钟
在 JavaScript 中,获取和设置 JS 元素的滚动位置非常简单,尤其是在用户在 Web 浏览器中构建用户界面时。因为在创建用户界面时,我们需要一个...
阅读 2 分钟
在本节中,我们将学习使用 JavaScript 数组实现堆栈。什么是堆栈?一种数据结构,我们以“后进先出”(LIFO)原则放置元素。LIFO 原则意味着元素的排列方式是...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India