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

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

有什么理由我应该用string.charAt(x)而不是括号符号string[x]?


撒科打诨
浏览 648回答 3
3回答

摇曳的蔷薇

除了IE7和更低的浏览器,括号符号现在适用于所有主要的浏览器。// Bracket Notation"Test String1"[6]// charAt Implementation"Test String1".charAt(6)使用括号曾经是个坏主意,因为这些原因(来源):这种表示法在IE7中不起作用。第一个代码段将返回IE7中未定义的代码段。如果您碰巧对代码中的字符串使用括号表示法,并且希望迁移到.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+和所有其他浏览器(AllEdge/Firefox/Chrome、Safari 2+、所有iOS/Android)。

月关宝盒

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

相关分类

JavaScript