es6总结上
一、let与const 关键字
var与let差别:
var
- 声明提升
- 变量覆盖
- 没有块级作用域
let
- 不存在声明提前
- 不会有变量覆盖
- 有块级作用域
let的缺点:
暂时性死区:在一个块级作用域内,如果用let声明了某个变量,那么该变量就自动绑定了该作用域,该作用域就形成了一个封闭的作用域。
const
const 声明一个只读的常量,一旦声明,常量的值就不能改变,一般用于全局变量
通常变量名全部大写
二、解构赋值
自动解析数组或对象中的值。比如若一个函数要返回多个值,常规的做法是返回一个对象,将每个值做为这个对象的属性返回。但在ES6中,利用解构这一特性,可以直接返回一个数组,然后数组中的值会自动被解析到对应接收该值的变量中。
1.变量的解构赋值
2.扩展运算符 …
3.对象的解构赋值
//变量的解构赋值
let [a, b, c] = [1, 2, 3];
// , = 占位符
let arr = ["小董", "小刘", "小王", "小涂"];
let [,,one] = arr; // 这里会取到小王
//扩展运算符 ...
//将数组或者类数组结构拆分为参数序列
// 解构整个数组,输出数组中的每一个。
console.log(...arr);
//对象的解构赋值
let obj = {
className : "dzq",
age: 21
}
let {
className} = obj; // 得到dzq
let {
age} = obj; // 得到21
//如果出现多层嵌套的对象需要解构
let dataJson = {
title:"abc",
name:"winne",
test:[{
title:"ggg",
desc:"对象解构赋值"
}]
}
//我们需要取出需要的两个title值(注意结构和键名)
let {
title:oneTitle,test:[{
title:twoTitle}]} = dataJson;
//剩余运算符
let {
a, b, ...demo}