string.charAt(x) or string[x]?

2022-08-30 00:04:49

有什么理由我应该使用括号符号代替吗?string.charAt(x)string[x]


答案 1

括号表示法现在适用于所有主流浏览器,IE7及更低版本除外。

// Bracket Notation
"Test String1"[6]

// charAt Implementation
"Test String1".charAt(6)

使用括号曾经是一个坏主意,原因如下(来源):

此表示法在 IE7 中不起作用。第一个代码片段将在 IE7 中返回未定义。如果您碰巧在代码中对字符串使用括号表示法,并且想要迁移到 ,这是一个真正的痛苦:括号在整个代码中使用,并且没有简单的方法来检测这是字符串还是数组/对象。.charAt(pos)

不能使用此表示法设置字符。由于没有任何警告,这确实令人困惑和沮丧。如果您正在使用该函数,则不会受到诱惑。.charAt(pos)


答案 2

来自 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)。