字符串擴展
- 1.字符的 Unicode 表示法
- ES6 對這一點做出了改進,只要將碼點放入大括號,就能正確解讀該字符。
- 2.codePointAt()
- JavaScript 內(nèi)部,字符以 UTF-16 的格式儲存,每個字符固定為2個字節(jié)。對于那些需要4個字節(jié)儲存的字符(Unicode 碼點大于0xFFFF的字符),JavaScript 會認為它們是兩個字符。
- ES6 提供了codePointAt方法,能夠正確處理 4 個字節(jié)儲存的字符,返回一個字符的碼點。
- 3.String.fromCodePoint()
- ES5 提供String.fromCharCode方法,用于從碼點返回對應(yīng)字符,但是這個方法不能識別 32 位的 UTF-16 字符(Unicode 編號大于0xFFFF)
- ES6 提供了String.fromCodePoint方法,可以識別大于0xFFFF的字符,彌補了String.fromCharCode方法的不足。在作用上,正好與codePointAt方法相反。
字符串的遍歷器接口 - ES6 為字符串添加了遍歷器接口(詳見《Iterator》一章),使得字符串可以被for...of循環(huán)遍歷。
- 除了遍歷字符串,這個遍歷器最大的優(yōu)點是可以識別大于0xFFFF的碼點,傳統(tǒng)的for循環(huán)無法識別這樣的碼點。
- 4.at()
- ES5 對字符串對象提供charAt方法,返回字符串給定位置的字符。該方法不能識別碼點大于0xFFFF的字符。
- 目前,有一個提案,提出字符串實例的at方法,可以識別 Unicode 編號大于0xFFFF的字符,返回正確的字符。
- 5.normalize()
- ES6 提供字符串實例的normalize()方法,用來將字符的不同表示方法統(tǒng)一為同樣的形式,這稱為 Unicode 正規(guī)化。
- 6.includes(), startsWith(), endsWith()(2個參數(shù),第一個字符串,第二個第幾位開始)
- includes():返回布爾值,表示是否找到了參數(shù)字符串。
- startsWith():返回布爾值,表示參數(shù)字符串是否在原字符串的頭部。
- endsWith():返回布爾值,表示參數(shù)字符串是否在原字符串的尾部。
- 7.repeat()(參數(shù)是數(shù)字)
- repeat方法返回一個新字符串,表示將原字符串重復n次。
padStart(),padEnd()(第一個參數(shù)是字符串長度,第二個參數(shù)是要循環(huán)的字符串) - ES2017 引入了字符串補全長度的功能。如果某個字符串不夠指定長度,會在頭部或尾部補全。padStart()用于頭部補全,padEnd()用于尾部補全。
- repeat方法返回一個新字符串,表示將原字符串重復n次。
- 8.matchAll()
- matchAll方法返回一個正則表達式在當前字符串的所有匹配,詳見《正則的擴展》的一章。
模板字符串(可以保留標簽或者變量值) - ` 會保留空格 ${(放入變量,甚至js代碼)}
- matchAll方法返回一個正則表達式在當前字符串的所有匹配,詳見《正則的擴展》的一章。
- 9.實例:模板編譯
- 10.標簽模板
- 11.String.raw()
- String.raw方法,往往用來充當模板字符串的處理函數(shù),返回一個斜杠都被轉(zhuǎn)義(即斜杠前面再加一個斜杠)的字符串,對應(yīng)于替換變量后的模板字符串。
模板字符串的限制
- String.raw方法,往往用來充當模板字符串的處理函數(shù),返回一個斜杠都被轉(zhuǎn)義(即斜杠前面再加一個斜杠)的字符串,對應(yīng)于替換變量后的模板字符串。