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