ES6中的变量的扩展
和var相比又有哪些区别呢?
首先,让我们回想下var都有那些特点和缺点
/*
var 声明变量的缺点:
1.可以重复声明
2.不能限制修改
3.没有块级作用域
特点:
有变量提升的功效
*/
想对比下,在让我们看下let的特点和缺点
/*
let 变量
1.不能重复声明
2.存在块级作用域
3.不存在变量提升功效
*/
看解释的话可能看的不是太懂,那就让我们直接看代码吧。
比如:
console.log(
a);
//
undefined
//
因为var有变量提升问题
var
a
=
1;
var a
=
3;
console
.log(
a)
//3
//
var可以进行修改值,也可以进行变量的从新赋值
console.
log(
a)
//
报错
//
let不存在变量提升的问题,所以不能再声明变量前进行打印
let
a
=
1;
a
=
3;
console.log(a)//3
//let不可以进行修改值,但是可以进行变量的重新赋值
let a = 4;
console.
log(
a)
//报错
//let不可以重复声明
在比如
{
var
t
=
99;
}
console.log
(
t
);
//
99
//
var没有块级作用域的概念,所以可以获取到大括号里面的值
{
let
T
=
3;
alert(
T);//3
}
console.log(
T);
//
报错
//
let有块级作用域的概念
const
/*
const 常量
常量一旦定义了,不可修改
const声明的数组和对象,可以向数组和对象数组中push和pop可以修改对象的属性值
原因是:
向数组中添加和删除东西,修改对象的属性值,并不会改变他自身原来的内存地址
*/
比如
const
m
=
1;
m
=
4;
//
报错
console.
log(
m);
如果是数组呢?
const
arr
= [];
arr.
push(
2);
console.
log(
arr);
//
[2]
并没有报错,大家可以试一下。
关于ES6的变量扩展我能分享给大家大概就是这么多了,
如果上述代码有错误和不足,请评论或私信,我好及时改正。