需要经常使用的方法

字符串

项目ECMAScript 版本用途说明
str.codePointAt()ES6返回一个字符的码点能够正确处理 4 个字节储存的字符((Unicode 码点大于0xFFFF的字符))
String.fromCodePoint()ES6从码点返回对应字符可以识别大于0xFFFF的字符,弥补了String.fromCharCode方法的不足
for (let ch of str)ES6字符串的遍历器接口
str.at()提案返回对应位置的字符可以识别 Unicode 编号大于0xFFFF的字符,
str.normalize()ES6将字符的不同表示方法统一为同样的形式,这称为 Unicode 正规化
str.includes()ES6返回布尔值,表示是否找到了参数字符串支持第二个参数,表示开始搜索的位置,能识别出NaN
str.startsWith()ES6返回布尔值,表示参数字符串是否在原字符串的头部支持第二个参数,表示开始搜索的位置
str.endsWith()ES6返回布尔值,表示参数字符串是否在原字符串的头部支持第二个参数,表示开始搜索的位置,针对前 n 个字符
str.repeat()ES6返回一个新字符串,表示将原字符串重复n次。
str.matchAll()ES6
str.padStart()ES2017返回一个新字符串,表示将原字符串重复n次。
str.padEnd()ES2017某个字符串不够指定长度,会在头部补全
模板字符串
String.raw()ES6返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串

数值

  • Number 方法上新增的静态方法
项目ECMAScript 版本用途说明
Number.isFinite()ES6检查一个数值是否为有限的(finite),即不是Infinity如果参数类型不是数值,一律返回false
Number.isNaN()ES6检查一个值是否为NaN如果参数类型不是数值,一律返回false
Number.parseInt()ES6同全局方法parseInt()减少全局性方法,使得语言逐步模块化
Number.parseFloat()ES6同全局方法parseFloat()减少全局性方法,使得语言逐步模块化
Number.isInteger()ES6判断一个数值是否为整数如果参数不是数值,返回false
Number.EPSILONES6常量,JavaScript 能够表示的最小精度对于 64 位浮点数来说,就等于 2 的 -52 次方
Number.MAX_SAFE_INTEGERES6常量,最大安全整数值为Math.pow(2, 53) - 1,即 9007199254740991
Number.MIN_SAFE_INTEGERES6常量,最小安全整数值为-Math.pow(2, 53) + 1,即 -9007199254740991
Number.isSafeInteger()ES6判断整数是否在最大最小安全整数之间,即在-2^532^53之间(不含两个端点)之间如果参数不是整数,一律返回false
  • Math 方法上新增的静态方法
项目ECMAScript 版本用途说明
Math.trunc()ES6去除一个数的小数部分,返回整数部分对于非数值,Math.trunc内部使用Number方法将其先转为数值;对于空值和无法截取整数的值,返回NaN
Math.sign()ES6判断一个数到底是正数、负数、还是零对于非数值,会先将其转换为数值。
Math.cbrt()ES6计算一个数的立方根对于非数值,Math.cbrt方法内部也是先使用Number方法将其转为数值
Math.clz32()ES6返回一个数的 32 位无符号整数形式有多少个前导 0
Math.imul()ES6返回两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数。
Math.fround()ES6返回一个数的 32 位单精度浮点数形式
Math.hypot()ES6返回所有参数的平方和的平方根
Math.expm1()ES6返回 Math.exp(x) - 1
Math.log1p()ES6返回1 + x的自然对数,即Math.log(1 + x)
Math.log10()ES6返回以 10 为底的 x 的对数
Math.log2()ES6返回以 2 为底的x的对数
Math.sinh(x)ES6返回 x 的双曲正弦(hyperbolic sine)
Math.cosh(x)ES6返回 x 的双曲余弦(hyperbolic cosine)
Math.tanh(x)ES6返回 x 的双曲正切(hyperbolic tangent)
Math.asinh(x)ES6返回 x 的反双曲正弦(inverse hyperbolic sine)
Math.acosh(x)ES6返回 x 的反双曲余弦(inverse hyperbolic cosine)
Math.atanh(x)ES6返回 x 的反双曲正切(inverse hyperbolic tangent)
  • 新增的运算符
项目ECMAScript 版本用途说明
**ES6指数运算符2 ** 2 // 4
**=ES6指数运算符可以与等号结合,形成一个新的赋值运算符b **= 3; // 等同于 b = b * b * b;

数组

项目ECMAScript 版本用途说明
Array.isArrayES5判断参数是否是数组
...(扩展运算符)ES6将数组转为用逗号分隔的参数序列注意与函数的rest参数区分开
Array.from()ES6将两类对象(类似数组的对象、可遍历的对象)转为真正的数组1、可遍历的对象包括 ES6 新增的数据结构 Set 和 Map;2、该方法可以接受第二、三个参数
Array.of()ES6将一组值转换为数组Array.of(3, 11, 8) // [3,11,8]
array.copyWithin()ES6在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组调用该方法会修改当前数组
array.find(fn)ES6找出第一个符合条件的数组成员类似于some,但是会返回匹配的元素
array.findIndex(fn)ES 2015找出第一个符合条件的数组索引类似于some,但是会返回匹配的元素的索引
array.fill()ES6将数组所有元素替换成给定值第二、三个参数指定替换的起始结束位置
array.entries()ES6遍历数组的键值对,返回遍历器对象
array.keys()ES6遍历数组的键名,返回遍历器对象
array.values()ES6遍历数组的键值,返回遍历器对象
array.includes()ES2016检测数组是否包含给定的值,返回布尔值类似字符串的includes方法

注意:

正则表达式

项目ECMAScript 版本用途说明
new RegExp(/xyz/, 'i')ES6构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符(ES5 不允许第一个参数是正则对象时,存在第二个参数)
RegExp.prototype[Symbol.match]ES6对应String.prototype.match
RegExp.prototype[Symbol.replace]ES6对应String.prototype.replace
RegExp.prototype[Symbol.search]ES6对应String.prototype.search
RegExp.prototype[Symbol.split]ES6对应String.prototype.split
u修饰符ES6正确处理四个字节的 UTF-16 编码
y修饰符ES6“粘连”(sticky)修饰符,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始
reg.stickyES6正则对象是否设置了y修饰符
reg.flagsES6返回正则表达式的修饰符
s修饰符ES6s修饰符,使得.可以匹配任意单个字符
(?<=)ES6后行断言
(?<!)ES6后行否定断言
\p{...}/\P{...}ES6允许正则表达式匹配符合 Unicode 某种属性的所有字符
具名组匹配ES6允许为每一个组匹配指定一个名字,既便于阅读代码,又便于引用

函数

项目ECMAScript 版本用途说明
函数参数的默认值ES6
fn.lengthES6返回没有指定默认值的参数个数如果设置了默认值的参数不是尾参数,那么length属性也不再计入后面的参数
...valuesrest参数)ES6获取函数的多余参数,values是参数数组仅用于函数声明时,注意与数组的扩展运算符的区别
=>(箭头函数)ES6箭头函数没有自己的this,使用的是外部的this尽量使用箭头函数
::(双冒号运算符)提案“函数绑定”运算符,用来取代callapplybind调用示例:foo::bar;等同于bar.bind(foo);
尾调用优化ES6ES6 第一次明确规定,所有 ECMAScript 的实现,都必须部署“尾调用优化”。这就是说,ES6 中只要使用尾递归,就不会发生栈溢出,相对节省内存。
函数参数的尾逗号ES2017函数的最后一个参数有尾逗号

对象

项目ECMAScript 版本用途说明
...扩展运算符
属性名表达式ES6允许字面量定义对象时,用表达式作为对象的属性名,即把表达式放在方括号内let example = 'xxx'; const obj = { [example]: true }
方法的name属性ES6对象方法也有name属性需要注意bind方法创造的函数、Function 构造函数创造的函数
Object.is()ES6比较两个值是否相等,采用“Same-value equality”(同值相等)算法与严格比较运算符(===)的行为基本一致,不同之处只有两个:一是+0不等于-0,二是NaN等于自身。
Object.assign()ES6将源对象(source)的所有可枚举且是自身的属性,复制到目标对象(target)target source 只有对象和字符串可用,别的类型会忽略
Object.getOwnPropertyDescriptors()ES2017获取指定对象所有自身属性(非继承属性)的描述对象。包括不可枚举属性
__proto__ES6读取或设置当前对象的prototype对象只有浏览器必须部署这个属性,其他运行环境不一定需要部署
Object.setPrototypeOf()ES6设置对象的__proto__这是 ES6 正式推荐的设置原型对象的方法
Object.getPrototypeOf()ES6获取对象的__proto__
super关键字ES6指向当前对象的原型对象super关键字表示原型对象时,只能用在对象的方法之中,用在其他地方都会报错;目前,只有对象方法的简写法可以让 JavaScript 引擎确认,定义的是对象的方法。
Object.keys()ES5数组,对象自身的(不含继承的)所有可遍历(enumerable)属性的键名
Object.values()ES2017数组,对象自身的(不含继承的)所有可遍历(enumerable)属性的键值过滤属性名为 Symbol 值的属性
Object.entries()ES2017数组,成员是对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对数组