所谓变量,就是里面存储的数据是可以改变的。
在使用变量之前,我们需要先声明变量。声明变量的关键字有var let const
在ES里面声明变量可以使用var,如下:
1
2
|
//var 变量名 var i; |
如果声明了一个变量,但是没有给该变量赋值,那么该变量默认的值为undefined
1
2
|
var i; console.log(i); //undefined |
初始化
所谓初始化,就是给变量进行第一次赋值
1
2
3
|
var i; i=5; //初始化 console.log(i); |
变量的声明和初始化是可以同时进行的
1
2
3
4
5
|
var i=5; /*等价于 var i; i=5; */ console.log(i); |
可以一次性声明多个变量
1
|
var i=5,j=10; |
重复声明:如果是var来声明变量,是可以重复声明的,ES里面不会报错
1
2
3
|
var i=5; var i=10; //相当于i=10 console.log(i); |
如果重复声明变量的时候,只是声明而没有赋值,那么解释器会忽略这一条声明
1
2
3
|
war 1-5; var i; //重复声明 console.log(i); //打印结果5 |
遗漏声明
所谓遗漏声明,就是指没有对变量进行声明,但是就直接拿来用。严格模式下不支持遗漏声明,并且也不要这样书写
1
2
|
i=10; console.log(i); |
由于JS是一门解释性语言,所以在JS里面,所有的变量都可以用var let const来进行声明
1
2
3
|
var i=5; i=3.14; console.log(i); |
虽然可以将任意数据类型存储至同一个变量,但是不推荐这么做。因为这样会影响解析的效率。
变量提升(重要)
之所以现在不推荐使用var来声明变量,就是因为var申明的变量会有一个变量提升。
所谓变量提升:就是指将变量的声明提升至当前作用域的顶部
1
2
3
4
5
|
console.log(i); var i=5; /*等价于 var i; console.log(i); i=5;<br>*/ |
使用let或者const声明的变量就不存在变量提升,如下:
1
2
|
console.log(i); let i=10; //报错 |
Var声明的变量不存在块级作用域
块级作用域就是一对大括号里面会产生一个单独的作用域
1
2
3
4
5
|
{ var i =5; console.log(i); } console.log (i); //5 |
Let和const就拥有块级作用域
1
2
3
4
5
|
{ let i=5; console.log(i); } console.log((i); //报错 |
Const:创建的变量不能再被改变。
1
2
3
4
|
const i=5; console.log(i); //5 i=10; console.log((i); //报错 |
JS里面的数据类型(非常重要)
JS里面的数据类型可以分为两大类:基本数据类型 和 引用数据类型
基本数据类型就是指最简单的数据段,不可拆分的
引用数据类型是指有多个基本数据类型组成的数据,是可以被拆分的。
常见的基本数据类型:Number,String,Boolean,Null,Undefiend,Symbol
常见的引用数据类型:Array Object
基本数据类型和引用数据类型的区别:
基本数据类型中,如果使用或者复制一个变量,那么是复制的值,而在引用数据类型中,如果使用或者复制一个变量,是复制的引用