es6中的新增字符串操作以及数值扩展
传统js只有indexOf方法来确定一个字符串是否包含在另一个字符串中。ES6又提供了3种新方法。
includes():返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。
endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。
var s = 'Hello world!'; s.startsWith('H') //true s.endsWith('!') //true s.includes('o') //true
这三个方法都支持第二个参数,表示开始搜索的位置。返回也是布尔值。使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对字符串结束时的字符串位置。其他两个是开始的位置。
repeat方法返回一个新字符串,表示将原字符串重复n次。参数如果是小数,会被取整。如果repeat的参数是负数或者infinity,会报错。(halo infinity).如果repeat的参数是字符串,则会先转换成数字。
ES7推出了字符串补全长度的功能。如果某个字符串未达指定长度,会在头部或尾部补全。padStart用于头部补全,padEnd用于尾部补全。padStart和padEnd分别接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数则是用来补全的字符串。如果原字符串的长度等于或大于指定的的最小长度,则返回原字符串。如果省略第二个参数,则会用空格来补全。
ES6在number对象上新提供了Number.isFinite()和Number.isNaN()这两个方法,用来检查Infinite和NaN这两个特殊值。
Number.isFinite()用来检查一个数值是否非无穷。这两个新方法与传统的全局方法isFinite()和isNaN()的区别在于,传统方法先调用Number()将非数值转为数值,再进行判断,而新方法只对数值有效,对于非数值一律返回false。
ES6将全局方法parseInt()和parseFloat()移植到了Number对象上,行为完全保持不变。这样做的目的,是逐步减少全局性方法,使语言逐步模块化。
Number.isInteger()用来判断一个值是否为整数。在js内部,整数和浮点数是同样的储存方法,所以3和3.0都被视为同一个值。
ES6在Math对象上新增了17个与数学相关的方法。所有这些方法都是静态方法,只能在Math对象上调用。
Math.trunc()方法用于取出一个数的小数部分,返回整数部分。对于非数值,Math.trunc内部使用Number方法将其先转为数值。对于空值和无法截取整数的值,返回NaN。
Math.sign()方法用于判断一个数到底是正数、负数,还是零。
Math.cbrt()方法用于计算一个数的立方根。
Math.hypot()方法返回所有参数的平方和的平方根。
ES7新增了一个指数运算符(**)。指数运算符可以与等号结合,形成一个新的赋值运算符(**=)。