そろそろJSわかってきたぞ!!ってときに改めて確認しておきたいJSデータ型の落とし穴


改めてJSの基本を勉強し直していて、
あーここもう少し前に知りたかったなという点があったので書いておきます。

データ型について 

そもそもデータ型とは、データの種類の事。
大きく分けると基本型と参照型があります。

  • 基本型…数値や文字列、真偽値など
  • 参照型…配列や連想配列、関数など

この2つの大きな違いは「値を変数に格納する方法」。
基本形は値そのものが変数に入りますが、
参照型はその配列や関数の入れてあるメモリ上のアドレスが変数に入ります。
イメージでいうと以下のような感じです。

これがわかってないと何が困るの???

参照を行った時に「???」となる可能性があります。
具体例を見てみましょう。

test.js

var num1 = 5;
var num2 = num1;
num1= 10;

console.log(num2);

この場合consoleに表示される値は「5」となります。
数字を上書きされたのはnum1なので、num2は元の数字のままというのは直感的にわかりますよね。

では下の例ではどうでしょうか?

test.js

var array1 = [1,2,3];
var array2 = array1;
array1[0] = 5;

console.log(array2[0]);

この場合、表示される値は「1」…ではなく「5」になります。
なぜ!?値を変えたのはarray1の方だけだよ???
と思うかもしれませんが、これは先ほど言ったアドレスが変数に入っているためです。
どうゆうことかというと、以下の図のような感じ。

ちょっとしたことですが、このイメージができるかできないかで壁にぶつかった際の理解スピードが違うと思うので、
頭の片隅にでもおいておいてもらえればと思います。