String.fromCodePoint()
String.fromCodePoint方法可以返回Unicode碼點值對應的字元,ES2015新增。
與String.fromCharCode方法的功能相同,但是功能更加完善,能夠識別大於0xFFFF的碼值。
關於String.fromCharCode方法更多內容參閱JavaScript fromCharCode()一章節。
此方法的出現自然有其原因,後面會通過程式碼例項更加詳細的介紹此ES2015新增此方法的必要性。
語法結構:
[JavaScript] 純文字檢視 複製程式碼String.fromCodePoint([code1[, code2[, ...[, codeN]]]])
引數解析:
(1).codeN:可選,要轉換為字串的一系列 Unicode碼值。不提供引數,則結果為空字串。
特別說明:fromCodePoint方法是靜態方法,直接使用類String呼叫,而不是字串例項。
瀏覽器支援:
(1).IE9+瀏覽器支援此方法。
(2).edge瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).火狐瀏覽器支援此方法。
(5).opera瀏覽器支援此方法。
(6).safria瀏覽器支援此方法。
程式碼例項如下:
絕大多數情況,String.fromCharCode方法完全可以滿足需要,因為絕大多數字符都是通過兩個位元組儲存。
但是由於隨著國際字元數量的增多,兩個位元組已經無法滿足需要,所以新增的字元通過四個位元組儲存,但String.fromCharCode方法無法識別四個位元組儲存的字元。
[JavaScript] 純文字檢視 複製程式碼執行程式碼console.log(String.fromCharCode(65));
程式碼執行效果截圖如下:
上述程式碼可以利用String.fromCodePoint方法返回65碼點值對應的字元"A"。
引數可以有多個碼點值構成,之間用逗號分隔。再來看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼console.log(String.fromCharCode(0b1000001));
程式碼執行效果截圖如下:
引數不但可以是十進位制也可以是二進位制,也可以是八進位制或者其他進位制。
考慮到篇幅,下面不再一一演示,感興趣的可以自行進行一下測試。
String.fromCodePoint方法可以完成絕大多數任務,但是遇到四個位元組儲存的字元就無能為力了。
[JavaScript] 純文字檢視 複製程式碼執行程式碼console.log(String.fromCharCode(0x20BB7));
程式碼執行效果截圖如下:
引數碼點值大於0xFFFF,所以方法的返回值是一個亂碼,無法正確識別。
使用String.fromCodePoint方法可以解決此問題,程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼console.log(String.fromCodePoint(0x20BB7))
程式碼執行效果截圖如下:
可以正確列印出碼值對應的字元,注意,列印出的字元並不是"吉祥"的"吉"。
當然此方法也可以一次性傳遞多個引數,非常簡單,不再進行演示。
還需要注意一點,不要認為此方法只能返回碼點值大於0xFFFF的字元,對於小於0xFFFF碼點值同樣有效。
所以說它是String.fromCharCode方法的加強版本,是功能的擴充和加強。