类型检测
2023年02月10日
一、通过全局isNaN()检测是否为NaN
const str = 'NaN';
const num = NaN;
console.log(isNaN(str)); // true
console.log(isNaN(num)); // true
二、通过Number.isNaN()检测是否为NaN
const str = 'NaN';
const num = NaN;
console.log(Number.isNaN(str)); // false
console.log(Number.isNaN(num)); // true
三、通过 typeof 检测
console.log(typeof 1); // number
console.log(typeof 1); // string
console.log(typeof true); // boolean
console.log(typeof undefined); // undefined
console.log(typeof null); // object
console.log(typeof NaN); // number
console.log(typeof {}); // object
console.log(typeof []); // object
console.log(typeof function (){}); // function
四、通过Object.prototype.toString.call()检测
通过slice
function typeOf (x){
return Object.prototype.toString.call(x).slice(8,-1).toLowerCase();
}
console.log(typeOf(1)); // number
console.log(typeOf('1')); // string
console.log(typeOf(true)); // boolean
console.log(typeOf(undefined)); // undefined
console.log(typeOf(null)); // null
console.log(typeOf(NaN)); // number
console.log(typeOf({})); // object
console.log(typeOf([])); // array
console.log(typeOf(function (){})); // function
通过replace
function getType(data) {
return Object.prototype.toString
.call(data)
.replace(/^\[object (.*)\]/, "$1")
.toLowerCase();
}
const num = 3;
console.log(getType(num) === "number");