TypeScriptで、Immutable(不変)とmutable(変更可能)の違いが、やっと分かった。
メモリ上のアドレスの話なのね。
1, プリミティブ型(数値や文字列)はImmutable(不変)なので、新しい値を代入する度に、新たにメモリを確保する。
2, オブジェクト型(プリミティブ型以外、配列やオブジェクト)はmutable(変更可能)なので、新しい値を代入しても、メモリ消費量は変わらない。
Immutableなプリミティブ型、例えば文字列変数に代入を続けていると、メモリ不足になる可能性があるから気をつけて!って事なのか
1 2 3 4 |
let text = ""; for (let i = 0; i < 10000; i++) { text += "何かの文字列"; // これは非効率的でメモリを大量に消費する可能性がある } |
これなら、大量の小さな文字列が一時的に配列に格納されるだけで、最終的な文字列は一度だけ生成されるため、メモリの使用量が大幅に削減されます
1 2 3 4 5 |
let parts = []; for (let i = 0; i < 10000; i++) { parts.push("何かの文字列"); } let text = parts.join(""); // メモリの使用を効率化 |