何故[]==[]は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になりますよ、ということ。