JavaScriptの基本型と参照型の違いについてちょっと面白かったのでメモ。
JavaScriptの主なデータ型
分類 | データ |
---|---|
基本型 | 数値型(number) |
基本型 | 文字列型(string) |
基本型 | 真偽型(boolean) |
基本型 | シンボル型(symbol) |
基本型 | 特殊型(null/undefined) |
参照型 | 配列(array) |
参照型 | オブジェクト(object) |
参照型 | 関数(function) |
基本型と参照型の違い
両者の違いは、「値を変数に格納する方法」
基本型の変数には値そのものが直接格納される。
参照型の変数はその参照値(値を実際に格納しているメモリ上のアドレス)を格納する。
等価演算子を使う時の注意
等価演算子は左辺と右辺の値が等しい場合はtrueを返す。
基本型の比較を行う場合
左辺と右辺の型が同じで、文字列や数値、論理値の比較の場合は単純に双方の値が等しいかが比較される。
console.log(1 == 1); // true
しかし、左辺と右辺の型が違う場合は型を数値に変換した上で判定を行う
#文字列の'1'が数値の1に変換されてから比較されるのでtrue
console.log(1 == '1'); // true
#論理値のtrueが数値の1に変換されてから比較されるのでtrue
console.log(1 == true); // true
参照型の比較を行う場合
参照型の比較はその参照値(メモリ上のアドレス)が等しいかが比較される。
#配列は参照型であり、data1の参照値とdata2の参照値は別(data1とdata2が指すメモリ上のアドレスが違う)なのでfalse
var data1 = ['apple', 'orange', 'banana'];
var data2 = ['apple', 'orange', 'banana']:
console.log(data1 == data2); // false