JavaScript プリミティブ型とオブジェクトについて
はじめに
JSのデータ型であるプリミティブ型とオブジェクトの違いについてまとめました。
僕の下手くそな図と共にお楽しみください。
データ型について
JavaScript(ES)には8種類のデータ型が存在する。
そして、その8種類のデータ型はプリミティブ型とオブジェクト型の2つに分けることができる。
プリミティブ型について
データ型 | |
---|---|
Boolean | 真偽値 |
null | null |
undefined | 未定義 |
Number | 数値 |
BigInt | 長整数 |
String | 文字列 |
Symbol | シンボル |
- 変数には値が格納される
- 一度作成するとその値を変更することはできない →
immutable(不変)
-
let
を使って再代入はできる
immutableについて
一度作成するとその値を変更することはできない
けど、letを使って再代入はできる
というのはどういう状況か図にまとめました
let prop = 'hoge'
prop
と言う変数に'hoge'
と言う文字列を格納したとします、これのメモリ空間を図で表すと
prop
という変数が'hoge'
という文字列が格納されているアドレスに参照を保持している状態です。
そこで
let prop = 'hoge'
+ prop = 'fuga'
prop
の値を再代入すると、メモリ空間は
'hoge'
と言う文字列と別のメモリに'fuga'
と言う文字列が格納され、prop
が持つ参照が'fuga'
が入っているアドレスに向けて変更されます。
なので、再代入はプリミティブ型の文字列である'hoge'
が変更されているわけではなくあくまでもprop
の参照先が変更されただけで一度作成するとその値を変更することはできない
けど、letを使って再代入はできる
と言うことになります。
オブジェクトについて
上であげたプリミティブ型以外全て
- 変数には参照が格納される
- 値を変更することができる →
mutable(可変)
mutableについて
値を変更することができる
とはどう言うことか
オブジェクトを定義してメモリ上でどのように値が保持されているのか図にしました
let obj = {
prop: 'hoge'
}
prop
と言うプロパティーを持ったオブジェクトをobj
に格納しました
prop
の値'hoge'
が変わったとしても変数obj
が保持している参照は変わらないことになるのでオブジェクトはmutable(値を変更することができる)
オブジェクトはプロパティの参照を管理している
参照リンク
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Grammar_and_types#data_types
https://developer.mozilla.org/ja/docs/Glossary/Mutable
https://developer.mozilla.org/ja/docs/Glossary/Immutable
まとめ
データ型にはプリミティブ型とオブジェクトが存在する
プリミティブ型はimmutable
オブジェクトはmutable
で名前付きの参照を管理している入れ物
おわり
Author And Source
この問題について(JavaScript プリミティブ型とオブジェクトについて), 我々は、より多くの情報をここで見つけました https://qiita.com/tsukiyama3/items/a16cfdbaee027a49d0d1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .