正则的扩展
1、RegExp构造函数
在ES5中,RegExp构造函数的参数有两种情况。第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符
第二个情况,参数是一个正则表达式
但是ES5不允许此时使用第二个参数,添加修饰符,否则会报错
ES6改变了这种行为
如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。返回的正则表达啊是会忽略原有的正则表达式的修饰符,只使用新指定的修饰符
2、字符串的正则方法
3.u修饰符(ES6对正则表达式添加了u修饰符,含义为Unicode模式,用来正确处理大于\uFFFF字符)
原因是ES5不支持四个字节的UTF-16编码,而\uD83D\uDc2A是一个四个字节的UTF-16编码,ES5会将其识别为两个字符,导致第二行代码结果为true,第一行是ES6的写法,所以第一行结果为false。
注意:对于码点大于\0xfff的字符,点字符不能识别,必须加上u修饰符;使用u修饰符后,所有量词都会正确识别码点大于0xFFFF的Unicode字符;预定义模式,u修饰符也影响到预定义模式,能够正确识别玛点大于0xFFFF的Unicode字符;i修饰符;
4、y修饰符
除了u修饰符,还为正则表达式添加了y修饰符,叫做粘连修饰符。y修饰符与g修饰符类似,也是全局匹配,g修饰符只要剩余位置中存在匹配就可,y修饰符确保匹配必须从剩余的第一个位置开始
5、sticky,与y修饰符相匹配,ES6的正则对象多了stciky属性,表示是否设置了y修饰符
6、flags属性,ES6为正则表达式新增了flags属性,会返回正则表达式的修饰符
7、RegExp.escape(),字符串必须转义,才能作为正则模式
8、S修饰符:doAll模式
9、后行断言
10、Unicode属性类
数值的扩展
ES6提供了二进制和八进制,分别用前缀0b和0o表示
二进制和八进制转化为十进制,使用Number方法可以转换
Number.isFinite()、Number.isNaN(),Number.isFinite()用来检查一个数值是否为有限的,Number.isNaN()用来检查一个值是否为NaN
Number.parseInt()、Number.parseFloat()移到Number对象上面,行为完全保持不变;
Number.isInteger() 用来判断一个值是否为整数;
Number.EPSILON,新增一个极小的常量Number.EPSILON其目的是为了为浮点数计算,设置一个误差范围;
安全整数和Number.isSafeInteger()用来判断一个整数是否落在这个范围内(-2^53-2^53)
Math对象扩展,Math.trunc()方法用于去除一个数的小数部分,返回整数部分;对于非数值,Math。trunc内部使用Number方法将其先转为数值;对于空值和无法截取整数的值,返回NaN;
Math.sign()判断一个数到底是整数、负数、还是零
Math.cbrt()计算一个数的立方根
Math.clz32():JavaScript的整数使用32位二进制形式表示,Math.clz32方法返回一个数的32位无符号整数形式有多少个前导0。(小数只考虑整数部分,对于空值或其他类型的值,Math.clz32方法会将他们转为数值)
Math.imul()方法返回两个数以32位带符号整数形式相乘的结果,返回也是一个32位的带符号整数
Math.fround()返回一个数的单精度浮点数形式
Math.fround()、Math.htpot()方法返回所有的平方和的平方跟
对数方法
1、Math.expm1() Math.expm1(x)返回ex-1,即返回Math.exp(x)-1.
2、Math.log1p(),返回一个1+x的自然对数,即Math.log(1+x).如果x小于-1,返回NaN
3、Math.log10(x)返回以10为底的x的对数。如果x小于0,则返回NaN。
4、Math.log2(),Math.log2(x)返回以2为底的x的对数。如果x小于0,则返回NaN。
三角函数方法
Math.sinh(x)返回x的双曲正弦(hyperbolic sine)
Math.cosh(x)返回x的双曲余弦(hyperbolic cosine)
Math.tanh(x)返回x的双曲正切(hyperbolic tangent)
Math.asinh(x)返回x的反双曲正弦(inverse hyperbolic sine)
Math.acosh(x)返回x的反双曲余弦(inverse hyperbolic cosine)
Math.atanh(x)返回x的反双曲正切(inverse hyperbolic tangent)