Mutable (ミュータブル)
ミュータブルは、変更可能な変数の型です。JavaScript では、プリミティブな値ではない、オブジェクトと配列だけがミュータブルです。
(変数名が新しい値を指し示すようにすることはできますが、以前の値はまだメモリーに保持されていますので、ガベージコレクションが必要です。)
ミュータブルオブジェクトは、オブジェクトを作成した後に状態を変更できるオブジェクトです。
イミュータブルは、オブジェクトが作成された後は状態を変更できないオブジェクトです。
文字列と数値はイミュータブルです。例をあげて理解しておきましょう。
var immutableString = "Hello"; // 上記のコードでは、文字列値を持つ新しいオブジェクトが作成されます。 immutableString = immutableString + "World"; // 今、既存の値に "World" を追加しています。
"immutableString" に文字列値を追加すると、次のイベントが発生します。
- "immutableString" の既存の値が取得される。
- "immutableString" の既存の値に "World" が追加される。
- 結果の値は、新しいメモリーブロックに割り当てられる。
- "immutableString" オブジェクトは新たに作成されたメモリー空間を指すようになる。
- 以前に作成されたメモリー空間がガベージコレクション可能になる。
より詳しく知る
一般知識
- Wikipedia 上の イミュータブル