let
- 它声明的变量只在let命令所在的代码块内有效。代码块由{}表示。
- 相较于var不存在变量提升。(undefined, ReferenceError)
- let命令声明变量之前,该变量都是不可用的。(暂时性死区)
- 块级作用域内不允许重复声明
const
- 声明一个只读常量。
- 声明需要立即初始化。
- 只在声明的块级作用域内有效
- 存在暂时性死区
- 块级作用域内不允许重复声明
解构赋值
解构成功
1let [a, b, c] = [1, 2, 3];解构不成功
|
|
- 不完全解构
|
|
- 只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值。
允许默认值
12let [x, y = 'b'] = ['a', undefined];// x='a', y='b', 必须严格等于undfined对象解构:对象的属性没有次序,变量必须与属性同名,才能取到正确的值
用途:
- 交换变量的值
- 从函数返回多个值
- 函数参数的定义
- 提取 JSON 数据
- 函数参数的默认值
- 遍历 Map 结构
- 输入模块的指定方法
字符串拓展
模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
12345$('#result').append(`There are <b>${basket.count}</b> itemsin your basket, <em>${basket.onSale}</em>are on sale!`);charAt()/at() 前者不能识别大于码点大于0xffff的字符,后者可以。
- includes()/startsWith()/endsWith() 作用与indexOf类似,判断是否包含字符串/以目标字串开始/以目标字串结束