此係列目的是經過簡短的內容讓讀者迅速瞭解到一個 JS 的冷知識,若是想更進一步學習的話能夠把文中的知識點深挖如下。前端
做者:大家的愷哥來源:前端真好玩|2020-08-04 09:57 收藏 分享
此係列目的是經過簡短的內容讓讀者迅速瞭解到一個 JS 的冷知識,若是想更進一步學習的話能夠把文中的知識點深挖如下。數組
獲取字符串的長度想必你們都是經常使用的:ide
'1'.length // -> 1
可是在某些狀況下,獲取字符串長度可能並不如你所想的同樣,好比說某些 emoji 甚至是漢字學習
'.length // ???
你可能會認爲我這隻用了一個 emoji,那麼長度應該是 1,可是實際上輸出的內容爲 11~編碼
筆者來簡單的說下這是爲何。code
字符是經過 Unicode 來表示的,JS 的字符編碼是 UCS-2,這個編碼規則是每兩字節表明一個字符,而後 JS 內部獲取字符串長度是經過計算字符長度來獲得的。blog
Unicode 字符分爲 17 組平面,第一個平面稱爲基本平面,Unicode碼位範圍爲 U+0000 - U+FFFF,其餘都叫作補充平面。對於 UCS-2 編碼來講除了基礎平面的字符長度爲 1 之外,其餘都爲 2。ip
對於 來講,它是由四個補充平面的碼位及三個基礎平面的碼位組成,因此它的字符長度爲 11。每一個 emoji 都有它各自的編碼信息,你能夠在網上自行查詢。開發
最後說個好玩的,對於 emoji 來講,咱們能夠對它進行結構,而後神奇的事情又發生了:字符串
總結
文章簡短,因此知識就是帶過,畢竟大部分冷知識腦子裏有個印象便可,若是你有興趣繼續學習,能夠去了解如下知識點: