素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

何故[]==[]はfalseなのか

追記2:hogeさんのコメントによると、文字列などは特別扱いだから""==""がtrueになるそうです。ということで、下記の説明は文字列や数値には適用できません。

追記:あれ、これじゃ''==''がtrueな理由を説明できない。たぶん下記の説明は間違い。
なんで[]==[]はfalseなのに、""==""はtrueになるんだろう。わからない。

var foo=new Array;
foo==foo;//true

これは想定通り。

var foo=[];
foo==foo;//true

同じことをやってるのでこれも当然。

var foo=[];
foo==[]//false

おっと、falseになったぞ?
[]は、new Arrayと同じ。だからこう書き直せる。

var foo=[];
foo==new Array;//false

つまり、下記と同じ。

new Array==new Array;//false

これなら分かる。
どちらもArrayオブジェクトだけど、同じではない。

var a=new Array;
var b=new Array;
a[0]='foo';

とやってもb[0]にfooが入らないのと同じ理屈。

ということで[]==[]はfalseになりますよ、ということ。