在老旧浏览器中应使用charAt()而非str[0]获取字符串首字符,因其自ECMAScript 3起即被标准化,IE5.5+全支持,越界或负索引均返回空字符串"",行为稳定不报错。

在老旧浏览器(如 IE6-8)中,直接使用 str[0] 访问字符串首字符不可靠——这些环境不支持字符串的类数组索引访问,会返回 undefined。此时应使用 String.prototype.charAt(),它是 ECMAScript 3 就已标准化的方法,兼容性极佳。
为什么 charAt() 更可靠
charAt(index) 是原生字符串方法,所有主流浏览器(包括 IE5.5+)均完整支持。它总是返回一个长度为 1 的字符串(即使索引越界也返回空字符串 ""),不会抛错,语义明确且行为稳定。
基本用法与边界处理
调用方式简单直接:
-
"hello".charAt(0)→"h" -
"world".charAt(10)→""(越界返回空字符串,不是undefined) -
"abc".charAt(-1)→""(负索引不识别,等同于无效位置)
注意:它不支持负数索引(如 Python 的 s[-1]),若需类似功能,需手动转换:str.charAt(str.length + i)(当 i 为负时)。
替代方括号语法的安全封装
如项目中大量出现字符串索引访问,可封装一个兼容函数避免重复判断:
function charAt(str, index) {
if (typeof str !== 'string') return '';
if (index 与其它方法的对比提醒
不要用 str.substring(i, i+1) 或 str.slice(i, i+1) 替代——它们虽也兼容旧环境,但开销略大,且对负索引的处理逻辑不同(slice 支持负数,substring 会自动归零)。而 charAt() 语义最贴近“取单个字符”,意图清晰、性能轻量。










