はじめに
JavaScriptのデータ型は大きくプリミティブ型とオブジェクトの2つに分かれます。
そのうちのプリミティブ型の特性として挙げられるのがimmutableです。
immutableは、「一度作成したら変更できない」ことを指します。しかし、私はlet
を使えば変更可能じゃないか!と思いました。
疑問点
immutableは「一度作成したら変更できない」を意味するのではないの?変更できるじゃん!
index.js
let message = 'Hello';
console.log(message);
message = message + 'World';
console.log(message);
Hello
HelloWorld
message
がHello
からHelloWorld
に変わっています。
結論
私が行なったことは変更ではなく、再代入でした。(変数message
に変数message
と文字列World
を繋いで生成した文字列を格納している場所を渡している)*参考文献中の記事がわかりやすかったです。
変更とは、以下のような既存の値に手を加えるだけのことを指すようです。
index.js
let message = 'Hello';
console.log(message);
message[0] = 'a';
console.log(message);
Hello
Hello
変更を加える前と後でmessage
が変わっていないことから、プリミティブ型である文字列がimmutableであることがわかります。