JavaScript字符串长度与常用操作方法详解
本文详解JavaScript中字符串长度的计算机制,包括length属性、字符索引及charAt等方法。重点解析UTF-16编码下代理对导致的长度误差,以及ES6对Unicode的支持,帮助开发者准确处理字符串操作。
字符串的 length 属性
说明:JavaScript 提供了多种方法以优化字符串操作体验
1. 获取字符串长度:length 属性
说明:利用 length 属性可获取字符串的长度及字符数量
语法格式:字符串变量名.length
var i = "你好";
var result = i.length;
console.log(result);2. 字符索引访问:[] 运算符
说明:在字符串后使用中括号并传入数字索引,可访问指定位置的字符
语法格式:字符串变量名[索引值]
var i = ["宝马","法拉利","兰博基尼"];
var c = i[1];
console.log(c);3. 获取指定位置字符:charAt() 与 CharCodeAt() 方法
说明:charAt() 和 CharCodeAt() 均用于获取指定索引位置的字符
charAt()
说明:依据给定的索引值返回对应的具体字符
var i = 'niHaoWoShi';
var j = i.charAt(2);
console.log(i.charAt(2));CharCodeAt()
说明:CharCodeAt() 返回该字符对应的 Unicode 编码值
注意:若 charCodeAt 返回值为负数或超出字符串长度范围,则结果为 NaN
var j = i.charCodeAt(2);
console.log(j);4. 字符串拼接:concat() 方法
说明:concat() 方法用于将多个字符串合并生成新字符串
语法格式:字符串变量1.concat(字符串变量2, 字符串变量3);
var str = 'niHaoWoShi';
var str2 = 'hello';
var str3 = 'sxt';
var i = str.concat(str2,str3);
console.log(i);JavaScript 字符串长度计算异常的原因
JavaScript 采用 Unicode 字符集,引擎内部所有字符均以 Unicode 形式存储。
每个字符在 JavaScript 内部以 16 位(2 字节)的 UTF-16 格式存储,即单位字符长度固定为 16 位(2 字节)。
然而,UTF-16 存在两种长度:码点位于 U+0000 至 U+FFFF 的字符长度为 16 位(2 字节);码点位于 U+10000 至 U+10FFFF 的字符长度为 32 位(4 字节)。
受历史原因限制,JavaScript 对 UTF-16 的支持不完整,仅支持两字节字符,不支持四字节字符。
'𝌆'.length // 2上述代码中,JavaScript 判定 𝌆 的长度为 2,而非 1。
综上所述,对于码点在 U+10000 到 U+10FFFF 之间的字符,JavaScript 始终将其视为两个字符(length 属性值为 2)。因此处理时需考虑此因素,JavaScript 返回的字符串长度可能不准确。
ES6 增强了对 Unicode 的支持,此前需拆分为两个 2 字节 Unicode 码表示的字符,现可用大括号包裹,直接以单个码点表示。
'\u{1F680}' === '\uD83D\uDE80'
// true总结
以上为个人经验总结,旨在提供参考,感谢大家的支持。
ES6模块化中js文件怎么用import和export交互
2026-11-05 17:00:48
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
