Не путаешь ли ты JS с PHP? Сравнение в JS ведёт себя вполне нормально. С округлением есть проблемы, с typeof есть проблемы, это да.
- function sayHi(x) {
- if (!x)
- return console.log('Bye');
- console.log('Hi');
- }
- //What will this print?
- sayHi(false);
- sayHi(null);
- sayHi([]);
- sayHi(new Boolean(false));
- var a = {
- valueOf: function () {
- return "2";
- }
- };
- console.log(1 == '1'); // #=> true
- console.log(1 == true); // #=> true
- console.log(0 == ''); // #=> true
- console.log(null == null); // #=> true
- console.log(null == undefined); // #=> true
- console.log(null == ''); // #=> false
- console.log(null == 0); // #=> false
- console.log(NaN == NaN); // #=> false
- console.log(a == 2); // #=> true
- console.log(a == true); // #=> false
- console.log(a == false); // #=> false