string.charAt(x)或string?
是否有任何理由我应该使用string.charAt(x)
而不是括号表示string[x]
?
// Bracket Notation "Test String1"[6] // Real Implementation "Test String1".charAt(6)
使用括号是一个坏主意,因为这些原因( 来源 ):
这个表示法在IE7中不起作用。 第一个代码片段将在IE7中返回undefined。 如果您碰巧在整个代码中使用了括号表示法,并且您希望将其迁移到
.charAt(pos)
,那么这是一个非常痛苦的事情:在您的代码中使用了方括号,并且没有简单的方法来检测这是否适用于string或数组/对象。您不能使用这种表示法来设置字符。 由于没有任何警告,这真是令人困惑和沮丧。 如果你正在使用
.charAt(pos)
函数,你不会被诱惑去做。
基本上,这是一种在所有浏览器中都没有完全实现的捷径。
请注意,您无法使用任一种方法编写字符。 但是,使用.charAt()
函数可以更轻松地理解该函数,在大多数语言中该函数是只读函数。
来自MDN :
有两种方法可以访问string中的单个字符。 首先是
charAt
方法:return 'cat'.charAt(1); // returns "a"
另一种方法是将string视为一个数组,其中每个索引对应于一个单独的字符:
return 'cat'[1]; // returns "a"
第二种方法(将string视为数组)不是ECMAScript 3的一部分; 这是一个JavaScript和ECMAScript 5function(并不支持所有浏览器)。
在这两种情况下,尝试设置个人angular色都不起作用。 试图通过charA设置一个字符导致错误,而试图通过索引设置一个字符不会引发错误,但string本身是不变的。
所以,正如你现在可能已经知道的那样,从兼容性angular度来看, charAt()
更好。
他们可以在边缘情况下给出不同的结果。
'hello'[NaN] // undefined 'hello'.charAt(NaN) // 'h' 'hello'[true] //undefined 'hello'.charAt(true) // 'e'
charAt函数取决于索引如何转换为规范中的数字 。
String.charAt()是标准的,它适用于所有的浏览器。 在非IE浏览器中,您可以使用括号表示来访问字符,但IE不支持。 (不知道他们是否已经实施了最新版本)。
如果有人真的想用支架notication。 将string转换为char数组是明智的select,以便与任何浏览器兼容。
var testString = "Hello"; var charArr = myString.split('');
testingstring索引访问器与charAt()
方法时非常有趣的结果。 似乎Chrome是唯一一个喜欢charAt
浏览器。
CharAt与指数1
图表与索引2
ChartAt与指数3