JavaScriptのプリミティブ型とラッパーオブジェクト
 Author: 水卜

javascript

JavaScriptの型について

プリミティブ型とラッパーオブジェクトがややこしかったのでまとめ。

プリミティブ型とオブジェクト型がある。
プリミティブ型は数値、文字列、論理値、null、undefined
オブジェクト型はそれ以外

String, Number, Booleanなどはラッパーオブジェクトと呼ばれる。
文字列、数値、論理値などのプリミティブ型をオブジェクトとして扱うことができる。

var sample = 'hello';
console.log(sample.length);

プリミティブ型のsampleにラッパーオブジェクトのメソッドやプロパティ(length)でアクセスすると、一時的にラッパーオブジェクトに変換される。

var sample = 'hello';
var sampleWrapper = new String('hello');
console.log(sample === sampleWrapper);
// false

文字列型≠String型なのがややこしいですね。

オブジェクト型は参照渡し

jsのオブジェクト型は参照渡し。
オブジェクトをコピーして渡すのではなく、オブジェクトが格納されているメモリ番地を渡します。
ときに、jsの定数はconstで定義すると思いますが、constは正確にはRead Onlyの参照を返しています。
変数識別子に対する再代入ができなくなるだけです。
オブジェクトのプロパティは普通に書き換え可能です。

つまり大文字で定数として宣言するならプリミティブ型の時に限定しましょう。