let and const
- let声明的变量只在代码块内有效 且无法提升 作用域内只能声明一次
- const声明一个常量 必须初始化 无法改变
- let和const所在代码块会形成一个封闭区域(无法读取外部对象)
- 简单类型(数值 number、字符串 string 、布尔值 boolean),值就保存在变量指向的那个内存地址,因此 const 声明的简单类型变量等同于常量。而复杂类型(对象 object,数组 array,函数 function),变量指向的内存地址其实是保存了一个指向实际数据的指针,所以 const 只能保证指针是固定的,至于指针指向的数据结构变不变就无法控制了,所以使用 const 声明复杂类型对象时要慎重.
解构
- 可遍历对象皆可进行解构赋值
可遍历对象:有iterator接口
Symbol
- 新的原始数据类型 多用于定义对象的唯一属性名
原始数据类型:Number String Boolean Object undefined null Symbol
map and set
- map的键值有序 size属性就是其键值对个数
- Map.keys() Map.values() Map.entries()
- Map的转换 克隆 合并(合并时候后者覆盖前者)new Map (...M1,...M2)
- set 集合 自动去重 NAN只能存一个
reflect and proxy
- pass
字符串
- 子串的识别 string.includes() startsWith() endsWith()
- 重复 string.repeat(times)
- 补全string.patStart(length,补全=' ') string.patEnd()
- 模板字符串 `${} \n` 模板中的换行和空格会被保留
- 标签模板 模板字符串参数会被处理成多个参数当其中有变量时
数值
-
常量Number.EPSILON
- Math.way()
对象
- 属性简写 方法名简写 属性表达式
- 拓展运算符... 取出参数对象所有可遍历属性 然后拷贝到当前对象
- Object.assign(target, source1, source2) 浅拷贝
- Object.is(value1,value2)
数组
- Array.of()
- Array.from(arraylike[,mapFn[,thiArg]])
- 数组缓冲区 pass
- 扩展运算符 ...
函数
- 默认参数 (未传递参数 或者参数为Undefined)null值被认为是有效的参数
- 不定参数 ...加上一个具名参数标识符 放在末尾 只能有一个
- 箭头函数 箭头函数中的this 是定义函数时的对象,而不是使用函数时的对象
迭代器
- 迭代器是一个统一的接口,它的作用是使各种数据结构可被便捷的访问,它是通过一个键为Symbol.iterator 的方法来实现。
迭代器是用于遍历数据结构元素的指针(如数据库中的游标) - for of 可迭代的值 即实现.[Symbol.iterator]()方法的对象 Array String Map Set Dom
- let 和const 作用域在迭代的内部 var作用于全局
class类
- 不可重复声明 不会被提升类中方法不需要function关键字 方法间不能家分号
- 只有静态方法(不需要实例能直接访问的方法)没有静态属性
- 装饰器 pass
- 封装与继承 通过extends实现 子类constructor必须出现在this之前
模块
- export import
promise对象
- 只会处于pending fulfiled rejected (resolved后状态不发生改变)
- .then 接受两个函数作为参数 第一成功时候的回调 和失败时候的回调 且永远在js事件队列的当前运行完成之后才会被调用
- promis链式编程
generator函数
- function* 函数内有yield
- next()传参数
- return throw
async函数
- async function name([param[,pram[,...param]]]){statements}
- async 返回一个Promise对象 可以使用方法添加回调函数
- Promise 对象:await 会暂停执行,等待 Promise 对象 resolve,然后恢复 async 函数的执行并返回解析值。非 Promise 对象:直接返回对应的值。