字符串的拓展:
es5提供了indexof方法,可返回某个指定的字符串值在字符串中首次出现的位置。而es6中则又新增了三个方法。
一:
1、includes方法返回一个布尔值,如果查询的字符在字符串中被找到了,返回true,否则返回false。
console.log('abcd'.includes('b')) //true
2、startsWith方法用于判断某个字符是否在字符串的开头位置,是返回true,否则返回false
console.log('abcd'.startsWith('a')) //true
3、endsWith方法用于判断某个字符是否出现在字符串的结束位置,是返回true,否则返回false
console.log('abcd'.endsWith('d')) //true
这三个方法都接受第二个参数,表示开始搜索的位置
1、console.log('abcd'.includes('b',2)) //false 从c开始搜索,结果搜索不到b,返回false
2、console.log('abcd'.startsWith('b',1)) //true 从b开始搜索,相对于bcd来说,b处于开头位置,返回true
3、console.log('abcd'.endsWith('c',3)) //true 从d开始搜索,相对于abc来说,c处于结束位置,返回true
二:repeat方法
repeat方法返回一个新字符串,用于重复一个字符串。
console.log('a'.repeat(2)) //aa
三:padStart和padEnd方法,用于补全字符串。
1、padStart用于在字符串的前面补全字符串
console.log('x'.padStart(3,"b")) //bbx
console.log('x'.padEnd(3,"b")) //xbb
这个两个方法都接受两个参数,第二个参数用来指定字符串的长度,第二个参数用填充字符串。
2、如果字符串没有位置空缺,则返回原字符串
console.log(‘x’.padStart(1,“b”)) //x
console.log(‘x’.padEnd(1,“b”)) //x
3、如果用于填充的字符超过指定的长度,被截断
console.log(‘x’.padStart(3,“bbbbbbb”)) //bbx
console.log(‘x’.padEnd(3,“bbbbbbb”)) //xbb
4、如果不指定用于填充的字符串,将默认使用空格填充
console.log(‘x’.padStart(3)) // x
console.log(‘x’.padEnd(3)) //x
四:字符串模板
1、字符串模板提供极大的方便,用反引号``定义,在反引号中,可以方便地填入变量,使用换行,单引号或双引号。
let name = "小明"
let age = 18
console.log(`我的名字叫${name},
今年${18}岁,我的哥哥叫"关尼僻仕"`)
结果:
我的名字叫小明,
今年18岁,我的哥哥叫"关尼僻仕"
如果需要使用反引号,需要在反引号前面用反斜杆进行转义如:`
2、在字符串模板中,变量应当填写在${}当中,不仅是变量,还可以放入任意的表达式,可以运算,可以引用对象的属性,可以调用函数。
let obj = {
a : 1,
b : 2
}
function fn () {
return "字符串模板真的很强大"
}
console.log(`obj的a+obj的b=${obj.a+obj.b},所以说,${fn()}`); //obj的a+obj的b=3,所以说,字符串模板真的很强大
3、字符串模板还能进行嵌套
console.log(字符串一${
字符串二}
); //字符串一字符串二
4、标签模板
function fn (a) {
console.log(a)
}
fn `123`; //打印出123
标签模板其实是函数的一种特殊的调用形式,函数的参数就是跟在函数名后面的字符串模板。
所以 fn 123
可以看成是这样:fn(123)
当字符串模板中包含变量的时候,会从字符串模板中提取出多个参数。
let name = "小明"
let age = 18
function fn (arr,var1,var2) {
console.log(arr) //["我叫", ",今年", "岁"]
console.log(var1) //小明
console.log(var2) //18
}
fn `我叫${name},今年${age}岁`;
可以看到,字符串模板中的变量的值被依次传给var1,var2,而其他的字符串被包装成一个数组,传递给arr。
可以看成是这样fn([“我叫”, “,今年”, “岁”],‘小明’,18);
数值的拓展:
1、isNaN方法
console.log(Number.isNaN(NaN)) //true
与es5中的isNaN的区别在于,es5中的isNaN方法在遇到非数值的情况下,会先把非数值转为数值,再判断。而es6中的isNaN方法
对于非数值一律返回false,只对NaN返回true。
2、parseInt方法和parseFloat方法被从全局转移到了Number对象中。
因此,es5调用的方法是:
parseInt()
parseFloat()
es6的调用方法是:
Number.parseInt()
Number.parseFloat()
3、isInteger方法,用于判断一个值是否为整数。
console.log(Number.isInteger(25)) //true
console.log(Number.isInteger(25.0)) //true
console.log(Number.isInteger(25.1)) //false
4、Math.sign方法,判断一个数值是整数还是负数,或者是0。
console.log(Math.sign(10)) //1
console.log(Math.sign(-10)) //-1
console.log(Math.sign(0)) //0
console.log(Math.sign(-0)) //-0
其他值返回NaN。