前言
为什么学习es6
每一次标准的诞生都意味着语言的完善,功能的加强。JavaScript语言本身也有一些令人不满意的地方。
变量提升特性增加了程序运行时的不可预测性
语法过于松散,实现相同的功能,不同的人可能会写出不同的代码
一、let变量
1.块级作用域
如果在外面选择输出,就会出现未定义的报错提示。
for(let i=1;i<10;i++){
console.log(i);
}
// console.log(i);//未定义
2.不存在变量提升
let必须写在输出的前面,不然会直接报错,需要格外的注意,也是先定义变量才能使用。
//console.log(i);//报错
let i=1;
console.log(i);
3.使用let变量需要先声明后使用
需要先声明变量,不声明变量直接使用,会出现没有声明的提示,要牢记先声明后使用的流程。
let i=1;
if(true){
i=2;
//let i=3;//报错
}
console.log(i);
4.不能重复声明
let a=1;
// let a=3; //重复了 报错
5.总结
-- let 关键字用来声明块级变量。
-- 特点就是在{}声明具有块级作用域,var变量无此特点。
-- 防止循环变量编程全局变量。
-- let 关键词无变量提升。
-- let 关键词有暂时性死区的特点。{先声明后使用}
二、const变量
1.块级作用域
与let用法相同
var a=1;
if(true){
const a=2;
console.log(a);//输出为2
}
2.声明常量必须赋值
if(true){
const a;//报错
console.log(a);
}
3.常量赋值不能修改
对象可以进行添加,但是不能修改整体的地址。
对象的本身是可变的,所以可以添加属性,但是地址不可改变。
if(true){
const a=2;
a=3;
console.log(a);// 报错
}
const person = {};
person.name ="张三";
person.age=18;
person = {};//报错
三、let、const和var的区别
使用 var 声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。
使用 let 声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。
使用 const 声明的是常量,在后面出现的代码中不能再修改该常量的值。
使用let,const的声明的变量不属性顶层对象,返回undefined。
四、结构赋值
数组
1.数组的结构赋值
let arr =[1,2,3];
let [a,b,c] = arr;
console.log(a,b,c);//1,2,3
2.二维数组
let [a,[b,c],d] = [1,[2,3],4];
console.log(a,b,c,d);//1,2,3,4
3.省略变量
let [a,,c] = [1,2,3];
console.log(a,c);//1,3
4.合并数组
let [a,...b] = [1,'a','b','c'];
console.log(a,...b);//1,a,b,c
5.默认值
如果是undefined 默认值生效
let [a,b='2'] = [1,undefined];
console.log(b);//2
对象
let Person = {realname:"张三",age:19};
let {realname,age} = Person;
console.log(realname,age);//张三,19
let Person = {realname:"张三",age:19};
let {realname:myrealname,age} = Person;//重命名
console.log(myrealname,age);//张三,19
let Person = {realname:"张三",age:19};
let {realname:myrealname,age height=183} = Person;//默认值
console.log(height);//183
版权归原作者 小余努力搬砖 所有, 如有侵权,请联系我们删除。