Appearance
ESMAScript
总结
let 和 const
let 声明变量
const 声明常量,声明必须赋初始值,常量值不可以修改
重点
- 没有变量的提升,存在暂时性死区(变量声明前调用报错,var 声明的变量提前调用默认为 undefined)
- 同一作用域内不允许重复声明同名变量
- 拥有块级作用域
解构赋值
模板字符串
数值拓展
二级制
可以使用 0B
或者 0b
表示二进制
js
const num1 = 0b101010101
const num2 = 0b101010101
八进制
可以使用 0o
或者 0O
表示八进制
js
const num1 = 0o767
const num2 = 0o767
BigInt
js
const num1 = 1234567890n // 大数值 后缀加n
const num2 = 0o767123456712n // 进制类型也支持
const num3 = new BigInt(1231231)
数值分隔符(_)
可以使用数字分隔符 _ 增强数字的可读性
js
const num1 = 12_3456_789
const num2 = 0b10_101_0101
const num3 = 12_312.1231_23
实例方法拓展
- Number.isFinite() 判断数值是否是有限的
- Number.isNaN() 判断数值是否为 NaN
重点:
- 与传统全局方法
isFinite()
和isNaN()
的区别是: 传统方法会先进行类型转换,再调用 Number.isFinite()等方法判断
js
isFinite(25) // true
isFinite("25") // true
Number.isFinite(25) // true
Number.isFinite("25") // false
- Number.parseInt()
- Number.parseFloat()
主要就是将全局方法parseInt()
和parseFloat()
,移植到Number
对象上面
- Number.isInteger() 判断一个数值是否为整数
js
Number.isInteger() // false
Number.isInteger(null) // false
Number.isInteger("15") // false
Number.isInteger(true) // false
重点:
- 小数位为 0 的浮点数 和 小数位超出存储范围的浮点数也是整数
js
Number.isInteger(25.0) // true
Number.isInteger(3.0000000000000002) // true
字符串 String 方法拓展
数组 Array 方法拓展
对象 Object 拓展
函数 Function 拓展
运算符拓展
正则拓展
1. Promise
Promise.all
Promise.any
目录
ES6
块级作用域
模板字符串
加强的对象字面量
Generator 生成器
模块概念
Proxy 代理
函数默认参数
ES7(ECMAScript2016)
ES8(ECMAScript2017)
共享内存 和 Atomics
ES9(ECMAScript2018)
Rest(剩余)/Spread(展开) 属性
Asynchronous iteration (异步迭代)
Promise.prototype.finally()
正则表达式改进
Unicode 属性转义 \p{…} 和 \P
命名捕获组(Named capturing groups)
正则表达式的 ‘s’ 标志
ES10(ECMAScript2019)
Try Catch Binding
Array.flat
Array.flatMap
String trimStart, trimEnd
Object.fromEntries
Function.prototype.toString()
Symbol.prototype.description
JSON.superset
JSON.stringify