4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

データの型(プリミティブ型・オブジェクト型)の違いについて書いてみた+連想配列

Last updated at Posted at 2017-09-12

今回はAngularから離れて、私がハマった概念「データ型」について書いてみようと思います。

###「プリミティブ型」と「オブジェクト型」
データ型には「プリミティブ型」と「オブジェクト型」などが存在します。
まずは、具体的なプリミティブ型とオブジェクト型について見てみましょう。
・・・と言ったもののですが、言語によってプリミティブ型とオブジェクト型の分類が変わってきます。
自分が使用している言語で気になる方がいれば調べてみてはいかがでしょうか?
しかし、一つも挙げないのは不親切なので、JavaScriptについて書いてみると
プリミティブ型はNumber,String
オブジェクト型はオブジェクト,連想配列
などが存在します。

オブジェクト型の例が聞いたことないと思った方は記事の最後に書いていますので、ご覧下さい。

ではプリミティブ型と参照型はどのような違いがあるのでしょうか?
イメージしやすいようにオブジェクトの"Obj", Stringの"Str"を使って説明します。

###プリミティブ型について
プリミティブ型は初心者がイメージしやすい、"値"をそのまま保持します。
具体的に見てみると

X = "値渡し";
Str = X;

Strを表示すると

値渡し

と表示されます。

###オブジェクト型について
オブジェクト型はプリミティブ型と違い、参照"場所"を保持します。
具体的に見てみると

Y = {Z: "値渡し"};
Obj = Y;

Obj.Zを表示すると

値渡し

と表示されます。
ここまではプリミティブと同じです、
しかし

Y = {Z: "値渡し"};
Obj = Y;
Y = {Z: "値変更"};

と"Obj"に代入した後に参照先であるY内の値を変更したらどうなるでしょう。
実際にObj.Zを表示すると

値変更

と表示されるはずです。
この、オブジェクト型は参照元の値が変更されると同時に参照先の値を変更されるのが特徴と言えます。

###オブジェクト型の注意点
では参照型でプリミティブ型のように使用したい場合(元の値を変更する)の解決策ですが
コピーしてしまえば解決です。Angularでは

angular.copy(参照したい変数)

と記述すれば参照元の値が変更されても元の値を保持してくれます。

###オブジェクト,連想配列について
初心者の方はオブジェクトや、連想配列についてあまり聞き覚えがないと思いいます。(または、ワード自体は知らないが使っていた)
オブジェクトは実際にコードを書いてみると

{}

で書かれているコードです。
連想配列は実際にコードを書いてみると

{"変数": ""}

で書かれているコードです。
※連想配列はオブジェクトの一部ですが、頻繁に使用するので例として挙げています。
連想配列が使いこなせるとより複雑なデータを操作することが可能になりますので、知らなかった方はマスターしましょう。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?