前面的话
javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串
字符串String是javascript基本数据类型,同时javascript也支持String对象,它是一个原始值的包装对象。在需要时,javascript会自动在原始形式和对象形式之间转换。本文将介绍字符串String原始类型及String包装对象
定义
字符串String类型是由引号括起来的一组由16位Unicode字符组成的字符序列
字符串类型常被用于表示文本数据,此时字符串中的每个元素都被视为一个代码点。每个元素都被认为占有此序列中的一个位置,用非负数值索引这些位置。首字符从位置0开始,第二个字符在位置1,依次类推
字符串的长度即其中元素的个数。空字符串长度为零,因而不包含任何元素
Unicode编码
javascript采用UTF-16编码的Unicode字符集,javascript字符串是由一组无符号的16位值组成的序列。最常用的Unicode字符都是通过16位的内码表示,并代表字符串中的单个字符
[注意]最常用的Unicode字符属于“基本多语种平面”(Basic Multilingual Plane BMP),也称为“零断面”(plan 0), 是Unicode中的一个编码区段,编码介于U+0000——U+FFFF之间
所有字符都可以写成'\uxxxx'的形式,其中xxxx代表该字符的Unicode编码。比如,\u00A9代表版权符号
var s = '\u00A9';
s // "©"
那些不能表示为16位的Unicode字符(U+10000到U+10FFFF之间的字符,长度为32位(即4个字节),而且前两个字节在0xD800到0xDBFF之间,后两个字节在0xDC00到0xDFFF之间),则遵循UTF-16编码规则——用两个16位值组成的一个序列(亦称做“代理项对”)表示。这意味着一个长度为2的javascript字符串(两个16位值)有可能表示一个Unicode字符
举例来说,U+1D306对应的字符"