ES6
let、const
- 块级作用域
`${}`
js
// 参数:strings, expression, ...
console.log`123` // ['123']
console.log`${1+2}${true}` // ['', '', ''] 3 true
字符串
- String.fromCodePoint()
- String.raw()
- s.codePointAt()
- "𠮷".length === 2
codePointAt()
是测试一个字符由两个字节或四个字节组成的最简单方法。
- s.normalize():处理欧洲语言音标格式化
- s.include()、s.startsWith()、s.endsWith()
- s.repeat()
正则
u
修饰符,处理UTF-16编码y
修饰符,sticky,功能类似g
修饰符,但从上一次匹配成功的下一位置开始- RegExp.prototype.flags,返回正则表达式的修饰符
- ES5:RegExp.prototype.source,返回正则表达式的正文
数字
0b
二进制,0o
八进制- Number.isFinite():检查数值不是
Infinity
- Number.isNaN()、Number.parseInt()、Number.parseFloat():原来是全局函数
- Number.isInteger()
- Number.EPSILON:
2^-52
,JavaScript能够表示的最小精度0.1+0.2 !== 0.3
- Number.MIN_SAFE_INTEGER、Number.MAX_SAFE_INTEGER、Number.isSafeInteger()
-2^53
到2^53
之间
- Math扩展了数学方法
- 函数
- function.name
- ()=>{}
- 没有自己的上下文
- 尾调用优化
数组
- Array.from()
- Array.of():Array.of(1,2,3) == Array(1,2,3) == [1,2,3]
- arr.copyWithin()
- arr.find()、arr.findIndex()
- arr.fill()
- arr.entries()、arr.keys()、arr.values()
对象
- 属性、方法简写
- key表达式
- Object.is(),与严格比较基本一致,不同的是
+0!=-0
,NaN==NaN
- Object.assign()
- 遇到取值函数时,会进行求值
- Object.setPrototypeOf(),Object.getPrototypeOf()
- 解构赋值
- 数组、字符串
- 对象
- 函数参数
- 数字、布尔值:自动转为原型对象,再按对象解构
- 剩余属性:
- 存储到新的对象或数组中
- 必须是模式中的最后一个,并且不能有尾随逗号
class
- constructor
- new.target:返回
new
命令作用于的那个构造函数
- new.target:返回
- static
- getter/setter
- extends
- super
- super():Parent.constructor()
- super[key]:Parent[key]
ES模块
- 自动采用严格模式
- import
- 自动提升到模块的头部
- import 'mod'
- import {a} from 'mod'
- import * as mod from 'mod'
- export
- export var a = 1
- export
- export
- export default
- export {a} from 'mod'
数据结构
- Set
- WeakSet
- Map
- WeakMap
- Symbol
- 新类型,表示独一无二的值,
typeof // "symbol"
- Symbol('foo')
- 内置通用symbol
- 新类型,表示独一无二的值,
Promise
- then/catch
- all
- race
- resolve/reject
fetch
js
fetch(url).then(handleRespose).catch(handleError)
迭代协议
- 可迭代协议
- 迭代器协议
for...of
- 数据结构只要满足可迭代协议即可循环遍历
- 内部调用[Symbol.iterator]方法
Generator
- yield