ほとんどのブラウザでは、JavaScriptの場合、文字列を配列のように扱い、文字列を読み取ることができます。しかし、私が試したすべてのブラウザ(IE9、Chrome、Firefox)では、配列のように書くことはできません。配列としてのJavaScript文字列:読み込み中ですが書き込みなし
var string = 'hello world';
alert(string[0]);//alerts 'h'
alert(string);//alerts 'hello world'
string[0]='j';
alert(string[0]);//alerts 'h'
alert(string);//alerts 'hello world'
これは単なるJavaScriptの開発者のためのより多くの影響があります。
jelloPeople.roam();
を誰もが、この背後にある理由を知っていますか?例えば
、私はMozilla's documentationを見てきました、そして、彼らはそれをほのめかすが、説明を与えていない:
」インデックスを経由して文字を設定すること..tryingありませんエラーはスローされますが、文字列自体は変更されません。
ボトムライン:いくつかの配列プロパティが文字列に与えられ、他のものは与えられないということは、私には奇妙で混乱しています。
UPDATE:
オクラホマので、JavaScriptの文字列は不変オブジェクトですが、なぜですか?上記のような操作が不変でない場合(11文字の新しい文字列を作るのではなく、1文字を変更する場合)は速くなるようです。実際には、文字列関数の場合、不変でないとパフォーマンスに悪影響を与えるケースはありませんが、パフォーマンスが改善される箇所がいくつか見られます。また、JavaScriptに真のマルチスレッドは存在しないため、そこには不変型のメリットはありません。
(削除され、これを調査し、おそらく新しいquesionに聞いてきます)
*未IE 6または7
'jelloPeople.roam()'?どういう意味ですか? –
文字列は不変です。 –
[immutability](http://en.wikipedia.org/wiki/Immutable_object) - よく知るべきことについて読む。 –