Почему («foo» === new String («foo»)) оценивается как false в JavaScript?

Я собирался начать использовать === (тройное равенство, строгое сравнение) все время при сравнении строковых значений, но теперь я обнаружил, что

"foo" === new String("foo")

ложно, и то же самое с этим:

var f = "foo", g = new String("foo");
f === g; // false

Конечно:

f == g; // true

Так рекомендуется ли всегда использовать == для сравнения строк или всегда преобразовывать переменные в строки перед сравнением?

98
задан Michael Butler 30 July 2012 в 19:47
поделиться