如果字符串作为数组运行,那么.charAt()的重点是什么?

时间:2012-09-22 13:46:55

标签: javascript arrays string

  

可能重复:
  string.charAt(x) or string[x]?

似乎"asdf"[0]会产生"a"。那么为什么有人会输入"asdf".charAt(0)

这种较短的语法是否可以安全使用?

跨浏览器兼容性?那是我能想到的全部。

4 个答案:

答案 0 :(得分:3)

您只能在较新的浏览器中将字符串作为数组访问。要支持旧浏览器(即IE7),您必须使用charAt

相关:string.charAt(x) or string[x]?

答案 1 :(得分:1)

我认为它使代码更清晰,更易读。如果你使用

foo.charAt(0) 

而不是

foo[0] 

(数组索引),您清楚地表明foo是一个字符串,而不是一个数组。此外,您不太可能使用可能失败的其他数组方法。

<强>附录

因为有些人不清楚我的意思,让我再说一遍:其他数组方法在String 上使用时可能会失败。

亲自尝试:

var foo = "This is a string.";
foo.push(" A string is not an array.");

你会得到一个TypeError。

对于那些可能会使用括号表示法混淆数组表示法的人,请尝试以下实验。打开浏览器控制台并输入以下内容:

foo = {bar:'ass',fub:'tree',mip:0};

现在尝试使用括号表示法访问第一个元素:

foo['bar']返回“ass”;

foo[0]返回undefined

答案 2 :(得分:0)

跨浏览器兼容性是一个问题。当我弹出IE9的控制台并将其设置为IE7标准时,“a”[0]产生未定义,而“a”.charAt(0)按预期工作。

答案 3 :(得分:0)

大多数浏览器确实允许您将字符串视为字符数组(就像它在许多其他编程语言中一样)。

另一方面,IE不会。在那里,您必须使用"asdf".charAt(0)

现在我要说允许[]符号只是浏览器允许的额外选项,使字符串的行为类似于C,Pascal等语言。但是,Javascript中的字符串实际上不是数组,因此按标准不应与[]一起使用。字符串是内置类,因此要访问它们的属性,您必须使用它们的公共方法,例如Java。

相关问题