ES6 变量

17 Mar 2025 | 4 分钟阅读

变量是内存中的一个命名空间,用于存储值。变量的名称称为标识符。在命名标识符时,您应该记住一些规则。这些规则如下:

  • 它可以包含数字和字母。
  • 您不能以数字开头命名变量。
  • 关键字不能用作变量的名称。
  • 标识符不包含空格和特殊字符,除了美元 ($) 符号下划线 (_)。

变量的初始化

这是将值存储在变量中的过程。变量可以在使用之前的任何时间初始化。

ES6 语法中,使用关键字 var 声明一个变量。在 ES5 中,我们这样声明变量

变量声明的有效语法类型

以下是一些被认为是有效的变量声明

ES6中,变量由以下方式声明

  • 使用 let
  • 使用 const

let

任何使用 let 关键字声明的变量都被分配了块作用域。块作用域 仅仅是一个部分,其中声明了 let 变量,无论它是一个 function{}、一个 block{} 还是一个 全局 (script)

例如:var v/s let

使用 var

当代码成功执行时,您将获得以下输出

输出

200

让我们尝试使用 let 关键字重写上面的代码

使用 let

输出

SyntaxError: Identifier 'x' has already been declared

当代码成功执行时,您将收到一个错误,即标识符 'x' 已经被声明。因此,任何使用 let 关键字声明的变量都被分配了块作用域。

const

ES6 提供了一种使用 const 关键字声明常量的新方法。关键字 const 创建对值的只读引用。const 具有以下一些属性

性质

  • 它不能被重新赋值。
  • 它是块作用域的。
  • 常量不能被重新声明。
  • 常量必须在声明时初始化。

例如

输出

TypeError: Assignment to constant variable.

它将抛出一个错误,因为常量变量是不可变的,不能被重新赋值。

JavaScript 变量作用域

JavaScript中有两个作用域,分别是全局局部:

  • 全局作用域: 在全局作用域中,可以从 JavaScript 代码的任何部分访问变量。
  • 局部作用域: 在局部作用域中,可以在声明变量的函数内部访问变量。

示例

以下示例描述了全局和局部作用域

在这个例子中,有两个变量,一个在函数之外(全局作用域),另一个在函数中(局部作用域)。

输出

Outside example() function = 200
Inside example() function = 300

JavaScript 动态类型

JavaScript 像 pythonperlruby 等一样支持动态类型的概念。这是一个特性,您不需要告诉 JavaScript 变量将保存什么类型的值。如果变量的值类型在程序执行期间发生变化,那么它就会被触发,JavaScript 会自动处理它。

ES6 和变量提升

提升是 JavaScript 的默认行为,即将所有声明移到当前脚本、当前函数或当前作用域的顶部。它允许您在声明之前使用变量。JavaScript 只会提升变量声明,而不会提升变量初始化。

例如

JavaScript 声明被提升

上面的代码不会给出声明错误,而是会成功执行并显示所需的输出。发生这种情况是因为提升的概念。让我们看看代码在编译阶段会发生什么。

当上面的代码处于编译阶段时,它将被视为

在编译阶段

输出

10

JavaScript 初始化未被提升

1. 当您在使用变量之前初始化它时

在编译阶段

输出

100  200

II. 当您在使用变量之后初始化它时

让我们看看当这段代码处于编译阶段时会发生什么。

当这段代码在编译中时,它将被视为如下

在编译阶段

当您执行此代码时,您将获得以下输出,其中 y 的值为 undefined。

输出

100  undefined

发生这种情况是因为提升不允许我们在使用后移动变量的初始化到顶部。


下一个主题ES6 运算符