ES6(声明与解构)

1.声明

• const命令:声明常量
• let命令:声明变量

作用域

• 全局作用域
• 函数作用域:function() {}
• 块级作用域:{}

作用范围

• var在全局代码中执行
• const和let只能在代码块中执行

赋值使用

• const声明常量后必须立马赋值
• let声明变量后可立马赋值或使用时赋值
• 声明方法:var、const、let、function、class、import

重点难点

• 不允许重复声明
• 未定义就使用会报错:const和let不存在变量提升
• 暂时性死区:在代码块内使用const和let声明变量之前,该变量都不可用

2.解构赋值

只要等号两边的模式相同,左边的变量就会被赋予对应的值

字符串解构:const [a, b, c, d, e] = "hello" // console.log(a) 结果 h

对象解构

• 形式:const { x, y } = { x: 1, y: 2 }
• 默认:const { x, y = 2 } = { x: 1 }
• 改名:const aa = { x, y: z } = { x: 1, y: 2 }//console.log(aa,z)结果{x: 1, y: 2} 2

数组解构

• 规则:数据结构具有Iterator接口可采用数组形式的解构赋值 // Array自带Iterator
• 形式:const [x, y] = [1, 2]
• 默认:const [x, y = 2] = [1]

函数参数解构

• 数组解构:function Func([x = 0, y = 1]) {} // 参数默认值
• 对象解构:function Func({ x = 0, y = 1 } = {}) {}
函数move的参数是一个对象,通过对这个对象进行解构,得到变量x和y的值。如果解构失败,x和y等于默认值。
例:function move({x = 0, y = 0} = {}) {return [x, y];}
move({x: 3, y: 8}); // [3, 8]
move({x: 3}); // [3, 0]
move({}); // [0, 0]
move(); // [0, 0]

应用场景

• 交换变量值:[x, y] = [y, x]
• 返回函数多个值:const [x, y, z] = Func()
• 提取JSON数据:const { name, version } = packageJson
• 定义函数参数默认值:function Func({ x = 1, y = 2 } = {}) {}
• 遍历Map结构:for (let [key, value] of Map) {}
• 输入模块指定属性和方法:const { readFile, writeFile } = require("fs")

重点难点

• 匹配模式:只要等号两边的模式相同,左边的变量就会被赋予对应的值
• 解构赋值规则:只要等号右边的值不是对象或数组,就先将其转为对象
• 解构默认值生效条件:属性值严格等于undefined
• 解构遵循匹配模式
• 解构不成功时变量的值等于undefined
• undefined和null无法转为对象,因此无法进行解构

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容