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

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

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

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

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

Конечно:

f == g; // true

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

Ответы на вопрос(5)

Ваш ответ на вопрос