千家信息网

JavaScript 字符串是什么

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇文章给大家分享的是有关JavaScript 字符串是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。说起字符串,我们再熟悉不过了。
千家信息网最后更新 2025年02月01日JavaScript 字符串是什么

本篇文章给大家分享的是有关JavaScript 字符串是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

说起字符串,我们再熟悉不过了。接触编程的第一个经典任务就是输出字符串:Hello, world。但是你知道 JavaScript 字符串在计算机里是怎么表示的吗?

最简单直观但不太准确的的理解就是,字符串就是由英文字母、数字和标点符号等这些字符组成的序列。比如下面这个字符串就是由5个字母和一个感叹号组成的:

const message = 'Hello!';

同时也可以看出该字符串的字符数是6:

const message = 'Hello!'; message.length; // => 6

如果字符串是由这些可见字符(也就是 127 个 ASCII 字符) 组成的,这样理解没有问题。但是,一旦碰到不常见的符号,比如一些表情字符?, ?, ?,可能会得到意外的结果:

const smile = '?'; smile.length; // => 2

是不是很奇怪?明明只有一个字符,长度怎么会是 2 呢?这是因为,JavaScript 字符串实际上是由编码单元构成的,而不是可见字符序列。

ECMA 262 规范里是这么描述 JavaScript 字符串的:

String 类型是由零或多个 16 位无符号整数值组成的有序序列的集合。字符串类型通常用于表示运行中的 ECMAScript 程序中的文本数据,在这种情况下,字符串中的每个元素都被视为 UTF-16 编码单元值。

简单说,JavaScript 字符串就是 UTF-16 编码单元序列,一串数字而已。

一个编码单元就是位于 0x0000 和 0xFFFF 之间的一个数字,编码单元与字符之间有个对应关系。例如,编码单元 0x0048 对应了实际的字符 H:

const letter = '\u0048'; letter === 'H' // => true

如果把一整个字符串'Hello!'用编码单元表示就是这样:

const message = '\u0048\u0065\u006C\u006C\u006F\u0021'; message === 'Hello!'; // => true message.length;       // => 6

可以看到,这个字符串有6个编码单元,每个编码单元对应一个字符。基本多文种平面 BMP(Basic Multilingual Plane)中的任意一个字符,都可以用一个 UTF-16 编码单元表示。但是,在这个范围以外的字符,就需要 2 个 UTF-16 编码单元来表示了。比如前面提到的笑脸符号,编码是\uD83D\uDE00:

const smile = '\uD83D\uDE00'; smile === '?'; // => true smile.length;  // => 2

这两个编码单元是成对存在的,用于表示超出 0xFFFF 的字符。不能拆开,否则就变成无法识别的乱码了。另外,这里的.length是2,说明这个属性其实是字符串编码单元的个数,而不是字符数。在需要判断字符数量的时候就要注意了,根据.length得到的结果是不准确的。那要怎么解决呢?可以用这种办法:

const message = 'Hello!'; const smile = '?';  [...message].length; // => 6 [...smile].length;   // => 1

以上就是JavaScript 字符串是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

字符 字符串 编码 单元 就是 是由 序列 符号 数字 之间 字母 实际 更多 知识 篇文章 类型 结果 有序 意外 直观 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 mio服务器声卡 mysql数据库行锁 光遇红米手机的服务器是哪一个 固定资产数据库模型 网信河北网络安全知识解答 李沧区微信小程序软件开发企业 漳州市政务网络安全预警 sonar使用什么数据库 恢复数据库的命令关键字是 网络安全防护监测情况 山东2022年单招学校网络技术 品质好的网络安全接入控制 济南兰塞网络技术有限公司 和网络技术有关的参考文献 网络安全法 判断题 5月8日网络安全板块涨幅达3% 雄安比特云软件开发中心 黄陂民宿软件开发 数据库有哪些常用的基础知识 tp5 连不上数据库 java软件开发的前景 物联网lwip并发服务器 福建会计软件开发服务优化 韶关网络安全工程师十大品牌 扬州个人软件开发售后服务 智玩软件开发有限公司 魔兽怀旧服怒炉服务器人口 郑州软件开发厉害的专科学校 三级网络技术押题 江苏威力网络技术厂家直销
0