string.charAt(x) or string[x]?
2022-08-30 00:04:49
有什么理由我应该使用括号符号代替吗?string.charAt(x)
string[x]
有什么理由我应该使用括号符号代替吗?string.charAt(x)
string[x]
括号表示法现在适用于所有主流浏览器,IE7及更低版本除外。
// Bracket Notation
"Test String1"[6]
// charAt Implementation
"Test String1".charAt(6)
使用括号曾经是一个坏主意,原因如下(来源):
此表示法在 IE7 中不起作用。第一个代码片段将在 IE7 中返回未定义。如果您碰巧在代码中对字符串使用括号表示法,并且想要迁移到 ,这是一个真正的痛苦:括号在整个代码中使用,并且没有简单的方法来检测这是字符串还是数组/对象。
.charAt(pos)
不能使用此表示法设置字符。由于没有任何警告,这确实令人困惑和沮丧。如果您正在使用该函数,则不会受到诱惑。
.charAt(pos)
来自 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)。