织梦网站模板免费下载,龙岩网站开发,深圳营销型网站建,梧州市网站建设通过可见字符建模把JavaScript中的string当作字符序列来看待是最直观的#xff0c;虽然这样并不准确。以下代码示例中的字符串由5个字母和一个感叹号组成#xff1a;const message Hello!;如果把string当作是可见的字符序列#xff0c;那么Hello!中的字符数是6#xff1a;…通过可见字符建模把JavaScript中的string当作字符序列来看待是最直观的虽然这样并不准确。以下代码示例中的字符串由5个字母和一个感叹号组成const message Hello!;如果把string当作是可见的字符序列那么Hello!中的字符数是6const message Hello!;message.length; // 6如果string中的字符都是ASCII字符那么通过可见字符的方式对string建模效果很不错。但是如果string中出现了更加复杂的字符比如这时候会出现意想不到的的问题。const smile ;smile.length; // 2怎么会这样呢?这是因为JavaScript将字符串视为码元(code unit)序列而不是可见字符序列。让我们更详细地了解JavaScript中的字符串。按码元建模The String type is the set of all ordered sequences of zero or more 16-bit unsigned integer values (“elements”). The String type is generally used to represent textual data in a running ECMAScript program, in which case each element in the String is treated as a UTF-16 code unit value. 简而言之JavaScript中的string是一个数字序列。如果用UTF-16编码的码元来表示Hello!这个字符串const message Hello!;message Hello!; // truemessage.length; // 6因为具有6个码元这对应于Hello!字符串中可见字符的数量。基本多文种平面(Basic Multilangual Plane)中的字符使用一个UTF-16码元进行编码但是非基本多文种平面(non-Basic Multilangual Plane)则使用一对不可分割的码元进行编码。const smile ;smile ; // truesmile.length; // 2该序列是一个特殊的对称为代理对(surrogate pair)。字符串迭代器认识代理对。当您调用字符串迭代器时(例如使用spread运算符)...它将代理对视为一个长度单位const message Hello!;const smile ;[...message].length; // 6[...smile].length; // 1