ES6隨筆--各數據類型的擴展(1) --字符串和正則
ES6隨筆--基本數據類型的擴展
字符串
Unicode表示法
\uxxxx
表示的Unicode如果碼數超過了0xFFFF的範圍,只要放進大括號內就能識別;
codePointAt()
用codePointAt()
可以準確識別碼數超出0xFFFF範圍的Unicode字符;
for...of
循環能夠正確識別32位的UTF-16字符;
String.fromCodePoint()
與codePointAt()
作用剛好相反;根據傳入的Unicede碼數返回對應的字符;
遍歷
for...of
循環可以循環遍歷字符串,並且可以識別大於0xFFFF
的碼點;
at()
補充charAt()
不能識別大於0xFFFF
的碼點的字符的缺陷;
normalize
用於將Unicode合成字符正規化為JS可識別字符;
includes(), startsWith(), endsWith()
補充indexOf()
;均返回布爾值;
includes()
、startsWith()
分別是參數字符串是否在原字符串包含、是否在原字符串頭部;第二個參數指從從第n
個字符開始向後查找;
endsWith()
表示參數字符串是否在原字符串的尾部,第二個參數是前n
個字符;
repeat()
接收數值參數,返回將原字符串重復n
次的新字符串;參數為Infinity
和復數會報錯,參數為0~1小數、NaN
會當做0;參數為小數會向下取整;參數為字符串會先轉換為數值;
padStart(), padEnd()
分別用於頭部補全和尾部補全,接收兩個參數:第一個參數指定字符串最小長度,第二個參數指定用於補全的字符串;
可用於補全數值位數,或者提示輸入字符串格式;
‘123456‘.padStart(10, ‘0‘) // "0000123456"
‘09-12‘.padStart(10, ‘YYYY-MM-DD‘) // "YYYY-09-12"
matchAll()
返回一個正則表達式在當前字符串的所有匹配;
模板字符串
用反引號標識,可以當做普通字符串,也可以定義多行字符串(空格和縮進都會被保留)和在字符串中嵌入變量(使用${}
,大括號中可以使用表達式、函數等);
變量必須是已聲明的變量;
標簽模板
模板字符串被用來跟在函數名後,該函數會被調用來處理該字符串;如果模板字符串裏有變量,會先將模板字符串處理成多個參數,再調用函數;處理成參數時,模板字符串中沒有變量替換的基本字符串會組合為一個數組作為函數的第一個參數,處理的變量則向後依次排列;
let a = 5;
let b = 10;
function tag(s, v1, v2) {
console.log(s[0]); //"hello"
console.log(s[1]); //"world"
console.log(s[2]); //""
console.log(s[3]); //undefined
console.log(s); //["hello ", " world ", "", raw: Array(3)]
console.log(v1); // 15
console.log(v2); // 50
return "ok";
}
tag`hello ${a+b} world ${a*b}`;