string.charAt(x)或string [x]?有什么理由我应该使用string.charAt(x)而不是括号表示法string[x]吗?
3 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
括号表示法现在适用于所有主流浏览器,IE7及更低版本除外。
// Bracket Notation"Test String1"[6]// charAt Implementation"Test String1".charAt(6)
由于这些原因,使用括号过去是个坏主意(来源):
这种表示法在IE7中不起作用。 第一个代码片段将在IE7中返回undefined。如果您碰巧在代码中使用括号表示法并且想要迁移到
.charAt(pos)
,那么这是一个真正的痛苦:在您的代码中使用括号,并且没有简单的方法来检测字符串或数组是否为/宾语。您无法使用此表示法设置角色。由于没有任何形式的警告,这真的令人困惑和令人沮丧。如果您正在使用该
.charAt(pos)
功能,那么您就不会想要这样做。
呼如林
TA贡献1798条经验 获得超3个赞
来自MDN:
有两种方法可以访问字符串中的单个字符。第一个是
charAt
方法,ECMAScript 3的一部分:return 'cat'.charAt(1); // returns "a"另一种方法是将字符串视为类似于数组的对象,其中每个单独的字符对应于数字索引。自IE第一版以来,大多数浏览器都支持此功能。它在ECMAScript 5中标准化:
return 'cat'[1]; // returns "a"第二种方式需要ECMAScript 5支持(在某些旧版浏览器中不支持)。
在这两种情况下,尝试更改单个字符都不起作用,因为字符串是不可变的,即它们的属性既不是“可写”也不是“可配置”。
str.charAt(i)
如果需要IE6 / IE7兼容性,从兼容性角度来看会更好。str[i]
更现代,适用于IE8 +和所有其他浏览器(所有Edge / Firefox / Chrome,Safari 2 +,所有iOS / Android)。
添加回答
举报
0/150
提交
取消