重複の可能性:
string.charAt(x)またはstring [x]?
"asdf"[0]
を生成するようです"a"
。では、なぜ誰かがタイプアウトするの"asdf".charAt(0)
でしょうか?
その短い構文は安全に使用できますか?
クロスブラウザの互換性?それが私が考えることができるすべてについてです。
重複の可能性:
string.charAt(x)またはstring [x]?
"asdf"[0]
を生成するようです"a"
。では、なぜ誰かがタイプアウトするの"asdf".charAt(0)
でしょうか?
その短い構文は安全に使用できますか?
クロスブラウザの互換性?それが私が考えることができるすべてについてです。
新しいブラウザーでは、配列としてのみ文字列にアクセスできます。古いブラウザー (IE7 など) をサポートするには、charAt
.
よりクリーンで読みやすいコードになると思います。使用する場合
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']
「お尻」を返します。
foo[0]
戻りますundefined
。
実際、ほとんどのブラウザーでは、string を char の配列として扱うことができます (他の多くのプログラミング言語で機能するのと同じように)。
一方、IEはそうではありません。そこでは、 を使用する必要があります"asdf".charAt(0)
。
ここで、[]
表記法を許可することは、ブラウザーが許可する追加のオプションであり、文字列を C や Pascal などの言語と同様に動作させることができると言えます。ただし、Javascript の文字列は実際には配列ではないため、標準では[]
. 文字列は組み込みクラスであるため、そのプロパティにアクセスするには、Java のように public メソッドを使用する必要があります。
クロスブラウザの互換性が問題です。IE9 のコンソールを開いて IE7 標準に設定すると、"a".charAt(0) は期待どおりに動作しますが、"a"[0] は undefined を生成します。