目录
一、变量概述
1、什么是变量
在js中,变量是存储数据值的容器。通过变量名获取数据,且数据可以修改。
本质:变量是程序在内存中申请的一块用来存放数据的空间。
2、变量的命名规则
在 JavaScript 中,变量名称并不能随便定义,需要遵循标识符的命名规则,如下所示:
- 变量名中可以包含数字、字母、下划线
_
、美元符号$
; - 变量名中不能出现汉字;
- 变量名中不能包含空格;
- 变量名不能是 JavaScript 中的关键字、保留字;
- 变量名不能以数字开头,即第一个字符不能为数字。
二、变量的使用
使用变量分为俩步:1、声明变量 2、赋值
1、只声明变量,不给变量赋值,输出变量显示初始值undefined
2、未声明变量,直接输出变量,则报错
3、不声明变量,直接给变量赋值是允许的,这是JavaScript的特性
1、声明变量
(1)、语法格式:
var 变量名;
定义变量时,可以一次定义一个或多个变量,若定义多个变量,则需要在变量名之间使用逗号,
分隔开。
var num; //声明一个名称为num的变量
var a,b,c; //同时声明多个变量
2、赋值
变量定义后,可以使用等于号=
来为变量赋值,等号左边的为变量的名称,等号右边为要赋予变量的值,也可以在定义变量的同时为变量赋值。
var num; //声明一个名称为num的变量
num = 1; //将1赋值给变量num
var num = 1; //声明变量同时赋值
var a,b,c; //同时声明多个变量
var a=1,b=2,c=3;
三、变量提升
JavaScript 在预编译期会先预处理声明的变量,但是变量的赋值操作发生在 JavaScript 执行期,而不是预编译期。
document.write(str); //显示undefined
str = 123;
document.write(str); //显示 123
var str;
在上面示例中,声明变量放在最后,赋值操作放在前面。由于 JavaScript 在预编译期已经对变量声明语句进行了预解析,所以第1行代码读取变量值时不会抛出异常,而是返回未初始化的值 undefined。第3行代码是在赋值操作之后读取,故显示为数字 123。
JavaScript 引擎的解析方式是:先解析代码,获取所有被声明的变量,然后再一行一行地运行。 这样,所有声明的变量都会被提升到代码的头部,这就叫作变量提升(Hoisting)。
四、 let 和 const 关键字
2015 年以前,JavaScript 只能通过 var 关键字来声明变量,在 ECMAScript6(ES6)发布之后,新增了 let 和 const 两个关键字来声明变量,其中:
- 使用 let 关键字声明的变量只在其所在的代码块中有效(类似于局部变量),并且在这个代码块中,同名的变量不能重复声明;
- const 关键字的功能和 let 相同,但使用 const 关键字声明的变量还具备另外一个特点,那就是 const 关键字定义的变量,一旦定义,就不能修改(即使用 const 关键字定义的为常量)。
注意:IE10 及以下的版本不支持 let 和 const 关键字。
let name = "李华"; // 声明一个变量 name 并赋值为“李华”
let age = 20; // 声明一个变量 age
let age = 23; // 报错:变量 age 不能重复定义
const PI = 3.14 // 声明一个常量 PI,并赋值为 3.14
console.log(PI)