来自MDN:
JavaScript的字符串类型用于表示文本数据。它是一组16位无符号整数值的“元素”。字符串中的每个元素在字符串中占据一个位置。第一个元素位于索引0,下一个元素位于索引1,依此类推。字符串的长度是其中元素的数量。可以使用字符串文字或字符串对象创建字符串。
当您说JavaScript String类型是一组16位无符号整数值的“元素”时,这意味着什么?
请解释为什么它是一系列整数值。
来自MDN:
JavaScript的字符串类型用于表示文本数据。它是一组16位无符号整数值的“元素”。字符串中的每个元素在字符串中占据一个位置。第一个元素位于索引0,下一个元素位于索引1,依此类推。字符串的长度是其中元素的数量。可以使用字符串文字或字符串对象创建字符串。
当您说JavaScript String类型是一组16位无符号整数值的“元素”时,这意味着什么?
请解释为什么它是一系列整数值。
4条答案
按热度按时间bmvo0sr51#
16位无符号整数值是特定字符的表示,由于它是元素的 * 集合 *,因此您可以像处理列表一样,使用
[]
表示法获取字符串中的特定字符。7kqas0il2#
它只是意味着字符串是一个“类似数组”的对象,每个字符的可用方式与数组元素类似,每个字符都存储为一个UTF-16 value。
ngynwnxp3#
据我所知:
1.无符号表示不是+或-。
1.一组整数意味着使用多个整数(1或更多)表示字符串。
因此,这意味着表示字符串,JavaScript使用一组数字(每个数字是2^16个数字中的一个,因为没有浮点数和正/负表示)。
注意:要了解更多信息,请阅读UTF-16
参考:* UTF-16 *(IBM)
smdncfj34#
在Unicode中,每个符号都有一个关联的数字。例如,
"A"
是65
,"a"
是97
,等等。这些数字称为码位。具体取决于我们使用的编码(UTF-32、UTF-16、UTF-8、ASCII等),我们用不同的方式来表示/编码这些代码点。2我们用来编码这些代码点的东西叫做“代码单元”,或者MDN称之为“元素”。当我们使用JavaScript时,我们对字符的UTF-16编码很感兴趣。这意味着要表示一个代码单元/“元素”,我们使用16位(两个字节)。对于“A”,“元素”表示为:
有很多角色需要我们去表现(想想表情符号、中文、日文、韩文等,每个都有自己的码位),所以16位单独表示和编码所有这些字符是不够的。这就是为什么有时候一些码位使用两个码单元/元素编码。例如,
😂
具有码点128514
,并且在UTF-16中由两个元素/码单元编码:这两个代码单元/元素
1101100000111101
(十进制55357)和1101111000000010
(十进制56834)编码表示😂
的128514
的码位/“字符”。请注意两个代码单元都是正数的情况(未签名),和为整数UTF 16概述了将这些元素从元素形式转换为代码点形式的算法,反之亦然(参见此处的示例)。所有这些意味着什么呢?这意味着像
"😂"
这样的字符串长度为2:当你访问字符串的索引时,你将访问该字符串的代码单元/“元素”: