为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕斯709654 2019-07-23 14:44:09
string.charAt(x)或string [x]?有什么理由我应该使用string.charAt(x)而不是括号表示法string[x]吗?
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

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

// Bracket Notation"Test String1"[6]// charAt Implementation"Test String1".charAt(6)

由于这些原因,使用括号过去是个坏主意(来源):

这种表示法在IE7中不起作用。 第一个代码片段将在IE7中返回undefined。如果您碰巧在代码中使用括号表示法并且想要迁移到.charAt(pos),那么这是一个真正的痛苦:在您的代码中使用括号,并且没有简单的方法来检测字符串或数组是否为/宾语。

您无法使用此表示法设置角色。由于没有任何形式的警告,这真的令人困惑和令人沮丧。如果您正在使用该 .charAt(pos)功能,那么您就不会想要这样做。


查看完整回答
反对 回复 2019-07-23
?
呼如林

TA贡献1798条经验 获得超3个赞

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


查看完整回答
反对 回复 2019-07-23
?
翻阅古今

TA贡献1780条经验 获得超5个赞

它们可以在边缘情况下给出不同的结果。

'hello'[NaN] // undefined'hello'.charAt(NaN) // 'h''hello'[true] //undefined'hello'.charAt(true) // 'e'

charAt函数取决于索引如何转换为规范中的数字


查看完整回答
反对 回复 2019-07-23
  • 3 回答
  • 0 关注
  • 744 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信