厳密な等価

私はJavaScriptをよく知らないままコピペで動かしてた人なんだけど、いつかちゃんと勉強したいなーと常々思ってた。
で、今日思い立って未だによく分からない厳密な等価(===)についてふと調べてみた。

var foo1 = 'test';
var bar1 = 'test';
var foo2 = new String('test');
var bar2 = new String('test');
foo1 == bar1;   // true
foo1 === bar1;  // true
foo2 == bar2;   // false
foo2 === bar2;  // false

そうだったのか……。
===以前にStringに誤解があったようだ。
ショック。
こんな基本の基本みたいなの知らないでよく書けてたなー