Есть много учебных пособий для ==
и ===
, поэтому, пожалуйста, не направляйте меня в основной учебник, мой вопрос немного конкретнее:
Например http://www.w3schools.com/jsref/jsref_obj_string.asp заявляет, что:
Синтаксис:
var txt = new String("string");
// or more simply:
var txt = "string";
Хорошо, но как насчет этого?
alert(new String("a") == new String("a")); // false
alert("a" == "a"); // true
var a = new String("a");
var b = new String("a");
alert(a == b); // false
var c = "a";
var d = "a";
alert(c == d); // true
alert(c === d); // true
alert (a === c); // false
Конечно, в любом случае никто не звонит new String()
, но разве это что-то значит о неудаче равенства, потому что new String()
обрабатывается как объект не как строка?
И, конечно же, W3Schools - не самый надежный источник, но я бы ожидал, что все вышеупомянутые предупреждения скажут правду.
Пожалуйста, объясните.