ㅤㅤㅤ
ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(最聪明的人是最不愿意浪费时间的人 - 但丁)
ㅤㅤㅤ
ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
ECMA5
-
严格模式(use strict)
- 作用
- 消除不安全之处,保证安全运行
- 提升编译效率
- 未来发展趋势
- 规则:
- 变量先定义在使用
- 不允许变量重名
- 不允许使用eval
- 不允许delete
- 不允许with语句
-
提供了json序列化方法
JSON.parse、JSON.stringify -
Object对象新增了方法
// 添加或更改对象属性 Object.defineProperty(object, property, descriptor) // 添加或更改多个对象属性 Object.defineProperties(object, descriptors) // 访问属性 Object.getOwnPropertyDescriptor(object, property) // 以数组返回所有属性 Object.getOwnPropertyNames(object) // 以数组返回所有可枚举的属性 Object.keys(object) // 访问原型 Object.getPrototypeOf(object) // 阻止向对象添加属性 Object.preventExtensions(object) // 如果可将属性添加到对象,则返回 true Object.isExtensible(object) // 防止更改对象属性(而不是值) Object.seal(object) // 如果对象被密封,则返回 true Object.isSealed(object) // 防止对对象进行任何更改 Object.freeze(object) // 如果对象被冻结,则返回 true Object.isFrozen(object)
-
数组新增了一些方法
Array.prototype.indexOf
Array.prototype.every
Array.prototype.some
Array.prototype.filter
Array.prototype.map
Array.prototype.forEach
- 函数增加了.bind方法
ECMA6
-
类
-
模块化
-
箭头函数
-
函数参数默认值
-
模板字符串
-
解构赋值
-
延展操作符
-
对象属性简写
-
Promise
-
Let与Const
ECMA7
- 数组includes方法,用于判断是否包含某个值
- a ** b指数运算符,它与 Math.pow(a, b)相同
ECMA8
-
async/await
-
Object.values()
-
Object.entries()
-
String padding: padStart()和padEnd(),填充字符串达到当前长度
-
函数参数列表结尾允许逗号
-
Object.getOwnPropertyDescriptors()
-
ShareArrayBuffer和Atomics对象,用于从共享内存位置读取和写入
ECMA9
-
异步迭代
-
Promise.finally()
-
Rest/Spread 属性
-
正则表达式命名捕获组(Regular Expression Named Capture Groups)
-
正则表达式反向断言(lookbehind)
-
正则表达式dotAll模式
-
正则表达式 Unicode 转义
-
非转义序列的模板字符串
ECMA10
-
行分隔符(U + 2028)和段分隔符(U + 2029)符号现在允许在字符串文字中,与JSON匹配
-
更加友好的 JSON.stringify
-
新增了Array的flat()方法和flatMap()方法
-
新增了String的trimStart()方法和trimEnd()方法
-
Object.fromEntries()
-
Symbol.prototype.description
-
String.prototype.matchAll
-
Function.prototype.toString()现在返回精确字符,包括空格和注释
-
简化try {} catch {},修改 catch 绑定
-
新的基本数据类型BigInt
-
globalThis
-
import()
-
Legacy RegEx
-
私有的实例方法和访问器
ECMA11
- String.prototype.matchAll 用于字符串批量匹配正则, 返回一个 可迭代对象
- 类的私有属性 #字段
- Promise.allSettled 不管参数中的promise是fulfilled还是rejected,都会等参数中的实例都返回结果,包装实例才会结束。
- 可选链操作符 使用" ?. "可选链式操作符, 会自动检测 ? 前面的对象是否存; 存在 则调用 , 不存在 则为 undefined
- 动态 import 导入
- bigInt 用于大数值运算
ECMA12
- 新的逻辑操作符 ?? 相比较|| 0和’'也会被认为是true
- String.prototype.replaceAll 有了这个 API,替换字符不用写正则了
- Promise.any() 返回第一个fullfilled 的 promise ,若全部 reject,则返回一个带有失败原因的 AggregateError
- WeakRefs 使用弱引用对象,该弱引用不会阻止 GC,并且可以在 GC 前使用 WeakRef.prototype.deref ( ) 解除该引用