官术网_书友最值得收藏!

3.3.4 String

String類型表示文本字符串,它由0個或多個字符構成。

JavaScript使用UTF-16編碼來表示一個字符。UTF-16編碼以兩個字節(jié)作為一個編碼單元,每個字符使用一個編碼單元或者兩個編碼單元來表示。在底層存儲中,字符串是由零個或多個16位無符號整數(shù)構成的有序序列。例如,字符串'ab'的存儲結構如圖3-4所示。

圖3-4 字符串'ab'的存儲結構

在獲取字符串長度時,返回的是字符串中包含的編碼單元的數(shù)量。對于字符串'ab'而言,返回的長度是2。因為字符'a'和字符'b'均由一個編碼單元表示,總和為2。前面介紹過,在UTF-16編碼中,一個字符可能使用一個編碼單元或者兩個編碼單元來表示。若字符串中包含需要使用兩個編碼單元表示的字符,那么獲取字符串長度的結果可能不符合預期。例如下面的字符串:


01 '?'.length; // 2

此例中,我們在獲取字符“”的長度時得到的結果為2,而期望的結果可能為1。這是因為“”字符需要使用兩個編碼單元來表示,即32個二進制位。字符串''的存儲結構如圖3-5所示。

圖3-5 字符串''的存儲結構

此外,ECMAScript 2015規(guī)定了字符串允許的最大長度為253 - 1,該數(shù)值也是JavaScript所能安全表示的最大整數(shù)。

主站蜘蛛池模板: 南溪县| 汕头市| 中山市| 静宁县| 鹤山市| 徐州市| 简阳市| 长春市| 丹江口市| 江源县| 府谷县| 辉县市| 白沙| 南阳市| 安国市| 福贡县| 新邵县| 嘉荫县| 从化市| 商南县| 奈曼旗| 桃园县| 洛宁县| 金门县| 彭州市| 青岛市| 石嘴山市| 繁峙县| 汝州市| 益阳市| 诸暨市| 泊头市| 富顺县| 永清县| 德庆县| 潜江市| 江陵县| 陆河县| 沂南县| 布尔津县| 滦平县|