1

strと呼ばれる文字列のn番目の文字にアクセスしたい場合は、のようなことをしなければならないといつも思っていました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

文字列内の個々の文字にアクセスするには、2つの方法があります。最初のcharAt方法は次のとおりです。

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

もう1つの方法は、文字列を配列のようなオブジェクトとして扱うことです。ここで、個々の文字は数値インデックスに対応します。

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

配列のような文字アクセス(上記の2番目の方法)はECMAScript3の一部ではありません。これはJavaScriptおよびECMAScript5の機能です。

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

私が覚えている限り、しかし:

配列のような文字アクセス[...]はECMAScript3の一部ではありません。これはJavaScriptおよびECMAScript5の機能です。

(...すべてのブラウザでサポートされているわけではありません)ここを参照してください。

于 2013-02-17T12:27:33.257 に答える