新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
99%開發(fā)者都不知道的JS冷知識系列(一)
此系列目的是通過簡短的內(nèi)容讓讀者迅速了解到一個 JS 的冷知識,如果想更進一步學習的話可以把文中的知識點深挖以下。

獲取字符串的長度想必大家都是常用的:
- '1'.length // -> 1
但是在某些情況下,獲取字符串長度可能并不如你所想的一樣,比如說某些 emoji 甚至是漢字
- '???'.length // ???
你可能會認為我這只用了一個 emoji,那么長度應該是 1,但是實際上輸出的內(nèi)容為 11~
筆者來簡單的說下這是為什么。
字符是通過 Unicode 來表示的,JS 的字符編碼是 UCS-2,這個編碼規(guī)則是每兩字節(jié)代表一個字符,然后 JS 內(nèi)部獲取字符串長度是通過計算字符長度來得到的。
Unicode 字符分為 17 組平面,第一個平面稱為基本平面,Unicode碼位范圍為 U+0000 - U+FFFF,其他都叫做補充平面。對于 UCS-2 編碼來說除了基礎平面的字符長度為 1 以外,其他都為 2。
對于 '???' 來說,它是由四個補充平面的碼位及三個基礎平面的碼位組成,所以它的字符長度為 11。每個 emoji 都有它各自的編碼信息,你可以在網(wǎng)上自行查詢。
最后說個好玩的,對于 emoji 來說,我們可以對它進行結(jié)構,然后神奇的事情又發(fā)生了:
總結(jié)
文章簡短,所以知識就是帶過,畢竟大部分冷知識腦子里有個印象即可,如果你有興趣繼續(xù)學習,可以去了解以下知識點:
- 字符編碼分為哪幾種
- Unicode 編碼相關
- emoji 編碼信息
標題名稱:99%開發(fā)者都不知道的JS冷知識系列(一)
當前地址:http://www.dlmjj.cn/article/djhhhpe.html


咨詢
建站咨詢
