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

string.charat(X)还是字符串[x]?

string.charat(X)还是字符串[x]?

撒科打诨 2019-06-26 16:46:03
string.charat(X)还是字符串[x]?有什么理由我应该用string.charAt(x)而不是括号符号string[x]?
查看完整描述

3 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

除了IE7和更低的浏览器,括号符号现在适用于所有主要的浏览器。

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

使用括号曾经是个坏主意,因为这些原因(来源):

这种表示法在IE7中不起作用。第一个代码段将返回IE7中未定义的代码段。如果您碰巧对代码中的字符串使用括号表示法,并且希望迁移到.charAt(pos)这是一个真正的痛苦:括号在您的代码中全部使用,并且没有一种简单的方法来检测它是用于字符串还是用于数组/对象。

您不能使用此符号设置字符。由于没有任何警告,这真是令人困惑和沮丧。如果您使用的是.charAt(pos)函数,你不会被诱惑去做它。


查看完整回答
反对 回复 2019-06-26
?
智慧大石

TA贡献1946条经验 获得超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+和所有其他浏览器(AllEdge/Firefox/Chrome、Safari 2+、所有iOS/Android)。


查看完整回答
反对 回复 2019-06-26
?
月关宝盒

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

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

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

函数取决于如何将索引转换为规格.


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

添加回答

举报

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