什么是变量
变量是储存数据信息的容器。
变量被认为是有名字的容器器。在代码中,使⽤用变量量名为值命名,需要遵循⼀一定的规则。
在 JavaScript 代码中,必须先声明⼀一个变量量,这个变量才能被使⽤用。 JavaScript 中的变量量是弱类型的,也被称之为松散型的。
所谓弱类型/松散型,就是指可以⽤用来保存任何类型的数据。
变量的声明
在 JavaScript 中,使⽤用变量量前应当先声明。变量量是使⽤用关键字 var 声明的。
只声明,未初始化,变量量的值⾃自动取值为 undefined
⼀⾏代码只声明⼀一个变量量:
var a; // 值为 undefined
var num; // 值为 undefined
⼀⾏代码声明多个变量量:
var x, y, z; // 值为 undefined
将变量的声明和初始化合写在一起
⼀行代码只声明⼀一个变量量并赋值:
var sum = 100; // 值为 100
var msg = "this is a message"; // 值为 this is a message
⼀行代码声明多个变量量并赋值:
var x = 0, y = 1, z = 2;
var x = y = z = 10; // x y z 值都为 10
命名规则
变量的命名需要遵守一定的规则,具体则如下:
- 必须以字⺟母、下划线 _ 、美元符号 $ 开始。
- 不能以数字开头。
- 不能使⽤用关键字和保留留字作为名称。
- 由于 JavaScript 是区分⼤大⼩小写的,⼤大写字⺟母与⼩小写字⺟母并不不冲突。
- 名称最好有明确的含义。
- 可以采⽤用“下划线命名法”、“驼峰命名法”等。
声明的问题
重复声明
使⽤用 var 语句句重复声明变量量是合法且⽆无害的。但是,如果重复声明并初始化的,由于 JavaScript 变量量只 能存储⼀一个数据,之前存储的数据会被覆盖掉。
var sum = 100;
var sum = "abc";
遗漏的声明
- 直接读取⼀个没有声明的变量的值,JavaScript 会报错。
- 为一个没有声明的变量初始化,是合法的,但并不推荐这样使用。
变量的使⽤
对声明的变量量既可以读取操作,也可以赋值操作。
- 读取操作
var sum; // 只声明未初始化
console.log(sum); // 输出 undefined
var msg = "hello"; // 声明并初始化
console.log(msg); // 输出 hello
- 赋值操作
var sum; // 只声明未初始化
sum = 100; // 初始化操作
var msg = "hello"; // 声明并初始化
msg = "world"; // 重新赋值
变量提升
JavaScript 引擎的工作⽅式是,先解析代码,获取所有被声明的变量,然后再⼀⾏⼀⾏的运⾏。这造成的结 果就是,所有的变量量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。
例如:
console.log(a);
var a = 1;
console.log(a);
输出结果:
undefined
1
说明:
1. 上面的代码等同于:
var a;
console.log(a);
a = 1;
console.log(a);
2. 变量声明被提升到头部时还没有赋值,所以默认等于 undefined
3. 变量提升只对 var 命令声明的变量有效。如果一个变量不是⽤ var 声明的,就不会发⽣变量提 升。