1. 程式人生 > >es6 字串與數值的拓展

es6 字串與數值的拓展

字串的拓展:

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。