javascript字符串索引访问支持方括号[]和charat(),索引从0开始且字符串不可变;[]越界返回undefined、不支持负数,charat()越界返回空字符串;修改需新建字符串;多码元字符(如emoji)需用for...of等安全遍历。
javascript 中字符串的索引访问方式是通过方括号 [] 或 charat() 方法获取指定位置的字符,索引从 0 开始,且字符串是不可变的——访问只读,无法直接修改单个字符。
用方括号 [] 获取字符
这是最常用、最直观的方式,语法简洁,类似数组访问:
-
"hello"[0]返回"h" -
"hello"[4]返回"o" - 超出范围(如
"hi"[5])返回undefined(注意:不是空字符串) - 负数索引不支持,
"hi"[-1]返回undefined
用 charAt() 安全获取字符
该方法在索引越界时返回空字符串 "",适合需要避免 undefined 的场景:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
"world".charAt(0)→"w" -
"world".charAt(10)→""(而非undefined) - 它会把非字符串索引转为字符串再处理,但通常传入数字即可
注意字符串不可变性
即使能“读取”某个位置的字符,也无法通过索引赋值修改:
-
let s = "abc"; s[0] = "x"; console.log(s);输出仍是"abc" - 想替换字符,必须创建新字符串,例如用
slice()+ 拼接:s = s.slice(0, 1) + "X" + s.slice(2) - ES6+ 可借助扩展运算符转为数组再操作:
[...s].map((c,i) => i===0 ? "X" : c).join("")
区分字符与码点(尤其涉及 emoji 或生僻字)
普通 ASCII 字符一个索引对应一个字符,但某些字符(如 ?、中文、带组合符的字)可能占多个 UTF-16 码单元:
-
"?".length是2,但它是单个 Unicode 字符(代理对) -
"?"[0]和"?"[1]分别返回高/低代理位,单独无意义 - 安全遍历应使用
for...of、Array.from(str)或String.prototype.codePointAt()
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










