Это условие:
if (m!=Number) {
всегда будет истинным.parseInt
возвращает number
.Number
- это функция.(some number) != (some function)
всегда будет истинным. Если это должна была быть проверка типа, это будет if (typeof m !== "number")
, но снова, parseInt
всегда возвращает число.
ЧислоТем не менее, parseInt
возврат может быть значением NaN
("не число"), что означает, что parseInt
не может найти любых разборчивых цифр в начале строки.Вы можете проверить это с помощью глобальной функции isNaN
(или Number.isNaN
).(Вы не можете сделать это с if (m === NaN)
, потому что NaN
странно и не равно самому себе.)
¹ Если кто-то специально не пытается сделать это ложным путемпереопределение valueOf
в функции для возврата числа:
function foo() {
}
// Don't do this. :-)
foo.valueOf = function() {
return 42;
};
console.log(42 != foo); // false
console.log(42 == foo); // true
«Всегда будет верно» будет гарантировано, если вы будете использовать !==
вместо !=
.