Почему («foo» === new String («foo»)) имеет значение false в JavaScript?
Я собирался начать использовать === (тройное равенство, строгое сравнение) все время при сравнении строковых значений, но теперь я обнаружил, что
"foo" === new String("foo")
ложно, и то же самое с этим:
var f = "foo", g = new String("foo");
f === g; // false
Конечно:
f == g; // true
Так что рекомендуется всегда использовать == для сравнения строк или всегда преобразовывать переменные в строки перед сравнением?