变量

在计算机程序中,一个变量使用给定的符号名与内存中的某个存储地址相关联并且可以容纳某个值。变量的值可以在程序的执行过程中改变。当我们操作变量时,实际上操作的是变量对应的存储地址中的数据。因此,在程序中可以使用变量来存储和操作数据。

变量名

JavaScript 中,每个变量都有唯一的名字,也叫作标识符。标识符的定义规则如下:

  • 允许包含字母、数字、下划线和美元符号 “$”。

  • 允许包含 Unicode 转义序列,如 “\u0069\u{6F}”。

  • 仅允许使用字母、Unicode 转义序列、下划线和美元符号($)作为第一个字符,不允许使用数字作为第一个字符。

  • 标识符区分大小写。

  • 不允许使用保留字作为标识符。

JavaScript 中的保留字列表如下所示:

break             case              catch             class
const             continue          debugger          default
delete            do                else              enum
export            extends           false             finally
for               function          if                import
in                instanceof        new               null
return            super             switch            this
throw             true              try               typeof
var               void              while             with
bash

JavaScript 严格模式下,下列保留字不允许作为标识符使用,但在非严格模式下则没有限制:

implements        interface         let               package
private           protected         public            static
yield
bash

变量声明

JavaScript 中有三种声明变量的方式,它们分别使用以下关键字:

  • var

  • let

  • const

其中,var 声明是在 ECMAScript 2015 之前就已经支持的变量声明方式,而 letconst 声明则是在 ECMAScript 2015 中新引入的变量声明方式。在很多编程语言中都提供了对块级作用域的支持,它能够帮助开发者避免一些错误。使用 letconst 关键字能够声明具有块级作用域的变量,这弥补了 var 声明的不足。因此,推荐在程序中使用 letconst 声明来代替 var 声明。

var 声明

var 声明使用 var 关键字来定义。在声明变量时,可以为变量赋予一个初始值。若变量未初始化,则其默认值为 undefined。示例如下:

var x = 0;

var y;  // undefined
typescript

let 声明

let 声明使用 let 关键字来定义。在声明变量时,可以为变量赋予一个初始值。若变量未初始化,则其默认值为 undefined。示例如下:

let x = 0;

let y;  // undefined
typescript

const 声明

var 声明和 let 声明不同,const 声明用于定义一个常量。const 声明使用 const 关键字来定义,并且在定义时必须设置一个初始值。const 声明在初始化之后不允许重新赋值。示例如下:

const x = 0;
typescript

块级作用域

块级作用域的概念包含了两部分,即块和作用域。变量的作用域指的是该变量的可访问区域,一个变量只能在其所处的作用域内被访问,在作用域外是不可见的。块级作用域中的块指的是 “块语句”。块语句用于将零条或多条语句组织在一起。在语法上,块语句使用一对大括号 “{}” 来表示。

块级作用域指的就是块语句所创建的作用域,使用 let 声明和 const 声明的变量具有块级作用域,但是使用 var 声明的变量不具有块级作用域。