2018-1-2
{}
とnew Object
、[]
とnew Array
JavaScript において、以下のコードは同じ意味である。
var hoge = {};
var hoge = new Object();
var hoge = [];
var hoge = new Array();
{}
と[]
は、それぞれnew Object
とnew Array
のシンタックスシュガーである。
なんでこういうことを今更書いたかというと、{}
と[]
による代入は、変数の参照先を変えるということを見落としていたからである。
var hoge = {
a: 0,
b: 1,
};
var fuga = function(obj) {
obj = {};
}
fuga(hoge);
console.log(hoge); // => { a: 0, b: 1 }
上のコードの通り、{}
と[]
による代入は変数の参照先を変更するため、関数の引数に対して行っても元の変数に影響を与えない。
なんとなく漠然と{}
と[]
によって代入を行うと、同じメモリアドレスを参照している変数全てが空になるイメージがあったので注意したい。