变量与常量
什么是变量
在计算机语言中,变量是与关联的符号名称(变量名)配对的抽象存储位置,其中包含一些已知或未知数量的数据或对象(称为值);或者更简单地说,变量是特定位组或数据类型的命名容器。该容器中所存储的值是可以修改的。我们通过调用变量名来获取或修改其中的值。
本质: 变量是程序在内存中申请的一块用来存储数据的空间(容器),在不同的时间段里,该空间中存放的内容可能不同。
什么是常量
在计算机编程中,常量是指程序在正常执行过程中不会改变的值,即常量值。当常量与标识符相关联时,常量被称为 “命名常量”,尽管 “常量 “和 “命名常量 “这两个术语经常被交替使用。这与变量形成鲜明对比,变量是一个标识符,其值可在正常执行过程中改变,即值是可变的。
常量也被称之为“字面量”,即所见即所得。
常量包括: 数字常量、字符串常量、布尔常量、自定义常量。
变量的定义与赋值
变量定义就是向计算机申请一块存储数据的内存空间,计算机会分配给我们一个内存地址,我们可以向这块内存地址中存放我们需要的内容。相当于我们申请到一个行李箱的使用权,我们可以向这个箱子里放我们想放的东西,比如:打工人回家时放上给家人带的礼物,从家回打工地时妈妈给你塞满了你喜欢的食物。
ES5 中变量的定义
在 ES6 语法前,我们统一使用 var 关键字来声明一个变量。
1 | var hello // 定义一个名为 hello 的变量。 |
与 C/C++/Java 等强类型语言不同,javascript 是弱类型语言,所以所有类型的变量都可以使用 var来定义。
ES6 中变量的定义
ES6 语法中新增了 let、const 关键字来替代 var(依然可以使用)。
- const: 定义一个常量,确定数据不会变更时使用该关键定定义。
- let: 定义一个变量,当数据会发生变更时使用该关键字来定义。
1 | const hello; // 定义一个常量 |
变量赋值与初始化
变量的第一次赋值被称为变量的初始化,一个变量在没初始化(只声明,未赋值)前,其变量值为 undefined,变量的初始化有两种形式:
- 直接赋值: 声明变量的同时给变量赋予初始值。
- 先定义后赋值: 先声明变量,在合适的位置给变量赋值。
直接赋值
声明变量的同时,给变更赋予初始值。如果使用 const 定义,则只能通过该方式赋值,赋值后无法再次更改变量(修改值时会报错)。
1 | let hello = 'hello' |
先定义后赋值
1 | let hello |
修改变量值
修改变量的值即给已经初始化过的变量赋予新的值,变量被重新赋值后,其原有的值会被覆盖,变量值以最后一次赋值为准。如:
1 | let a = 10 |
同时定义多个变量
如果有多个变量需要被定义时,可以使用一个关键字来定义所有变量,多个变量名之间使用 英文逗号,分隔即可。
1 | let a, b, c |
如果变量在声明时变可以确定其值,可直接进行初始化。
1 | let a = 1, |
若要声明的变量值都相等,可以通过连等的形式来声明(不推荐)。
1 | let a = (b = c = 3) |
若在声明时只有部分变量可以确定其值,部分变量暂无法确定其值。
1 | let a, |
若变量被重复定义,使用 let、const 和 var 表现不同。
1 | let a = 1 |
若不使用关键定直接为变量赋值时,变量也可以被定义。
1 | a = 100 |
若不声明且不赋值直接使用变量,则运行时会报错。
1 | console.log(a) // ReferenceError: a is not defined |
总结
- 在 ES5 中,我们使用
var来声明变量,也可以不声明变量直接赋值,赋值后变量也可使用。 - 在 ES6 中,我们使用
let或var来声明变量,使用const来声明常量,也可以不声明变量直接赋值,赋值后变量也可使用。 - 变量的第一次赋值被称为变量的初始化。
const定义常量时,需要同时初始化,否则无法编译通过。const定义的常量无法被修改,修改无法编译通过。let、const和var在使用上会有一些差别。
其他差别请查看认识关键字 var/let/const。






