链接:https://juejin.im/post/5d9bf530518825427b27639d
声明
- const命令:声明常量
- let命令:声明变量
作用作用域
- 全局作用域
- 函数作用域:function() {}
- 块级作用域:{}
- var 命令在全局代码中执行
- const命令和let命令只能在代码块中执行
- const命令声明常量后必须立马赋值
- let命令声明变量后可立马赋值或使用时赋值
重点难点
- 不允许重复声明
- 未定义就使用会报错:const命令和let命令不存在变量提升(有争议)
- 暂时性死区:在代码块内使用let命令声明变量之前 , 该变量都不可用
- 字符串解构:const [a, b, c, d, e] = "hello"
- 数值解构:const { toString: s } = 123
- 布尔值解构:const { toString: b } = true
- 对象解构
- 形式:const { x, y } = { x: 1, y: 2 }
- 默认:const { x, y = 2 } = { x: 1 }
- 改名:const { x, y: z } = { x: 1, y: 2 }
- 数组解构
- 规则:数据结构具有Iterator接口可采用数组形式的解构赋值
- 形式:const [x, y] = [1, 2]
- 默认:const [x, y = 2] = [1]
- 函数参数解构
- 数组解构:function Func([x = 0, y = 1]) {}
- 对象解构:function Func({ x = 0, y = 1 } = {}) {}
应用场景
- 交换变量值:[x, y] = [y, x]
- 返回函数多个值:const [x, y, z] = Func()
- 定义函数参数:Func([1, 2])
- 提取JSON数据:const { name, version } = packageJson
- 定义函数参数默认值:function Func({ x = 1, y = 2 } = {}) {}
- 遍历Map结构:for (let [k, v] of Map) {}
- 输入模块指定属性和方法:const { readFile, writeFile } = require("fs")
重点难点
- 匹配模式:只要等号两边的模式相同 , 左边的变量就会被赋予对应的值
- 解构赋值规则:只要等号右边的值不是对象或数组 , 就先将其转为对象
- 解构默认值生效条件:属性值严格等于undefined
- 解构遵循匹配模式
- 解构不成功时变量的值等于undefined
- undefined和null无法转为对象 , 因此无法进行解构
【JavaScript的声明方法和作用范围,常见的结构赋值类型和使用场景】
推荐阅读
- Linux下配置SVN的bash脚本封装
- 用PHP实现遍历删除目录及此目录下存放的所有文件
- 每个架构师都知道的康威定律,你确定不来看看?
- 中德艺术家创茶尖上的芭蕾 原创团队贵州苦练
- Oracle数据库之如何快速查找未使用绑定变量的SQL语句
- WinRAR该让位了?免费开源的压缩软件横空出世
- 血糖高的孕妇便秘怎么办?
- 孕妇测血糖的注意事项有哪些?
- 宝宝后脑勺有血管瘤怎么办?
- 哺乳时乳头很疼怎么办