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

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

有什么理由我应该使用string.charAt(x)而不是括号表示法string[x]吗?



慕斯709654
浏览 747回答 3
3回答

海绵宝宝撒

括号表示法现在适用于所有主流浏览器,IE7及更低版本除外。// Bracket Notation"Test String1"[6]// charAt Implementation"Test String1".charAt(6)由于这些原因,使用括号过去是个坏主意(来源):这种表示法在IE7中不起作用。 第一个代码片段将在IE7中返回undefined。如果您碰巧在代码中使用括号表示法并且想要迁移到.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)。

翻阅古今

它们可以在边缘情况下给出不同的结果。'hello'[NaN] // undefined'hello'.charAt(NaN) // 'h''hello'[true] //undefined'hello'.charAt(true) // 'e'charAt函数取决于索引如何转换为规范中的数字。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript