1

我一直认为,如果您想访问名为 的字符串中的第 n 个字符str,那么您必须执行类似的操作str.charAt(n)。今天我正在制作一个小的虚拟测试页面,我错误地访问了它,str[n]令我惊讶的是,它返回了字符串的第 n 个字符。我抛出了这个专门构建的小页面来展示这种意想不到的(对我而言)行为:

<!doctype html>
<html>
<body>
    <script>
        var str = "ABCDEFGH";
        if (str[4] === str.charAt(4)) alert("strings can be indexed directly as if they're arrays");
        var str2 = new String("ABCDEFGH");
        if (str2[4] === str2.charAt(4)) alert("even if they're declared as object type String");
    </script>
</body>
</html>

并不总是这样,不是吗?

4

3 回答 3

4

有两种方法可以访问字符串中的单个字符。首先是charAt方法:

return 'cat'.charAt(1); // returns "a"

另一种方法是将字符串视为类似数组的对象,其中单个字符对应于数字索引:

return 'cat'[1]; // returns "a"

类似数组的字符访问(上面的第二种方式)不是 ECMAScript 3 的一部分。它是 JavaScript 和 ECMAScript 5 的特性。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String

于 2013-02-17T12:24:35.497 回答
3

不,这并不总是可能的。

如果您在足够旧的浏览器中运行代码,例如 IE 7,它将无法访问这样的字符串。在那些较旧的引擎上,您必须.charAt(index)改用。

于 2013-02-17T12:23:46.303 回答
2

只要我记得,但是:

类似数组的字符访问 [...] 不是 ECMAScript 3 的一部分。它是 JavaScript 和 ECMAScript 5 的特性。

(...并非所有浏览器都支持)请参见此处。

于 2013-02-17T12:27:33.257 回答