本文介绍三种js类型判断方法。
一、typeof(有坑)
语法:typeof(表达式)、typeof 变量名
返回值:undefined/boolean/string/number/object/function/symbol/bigint
示例:
typeof undefined // undefined
typeof true // boolean
typeof '1' // string
typeof 1 // number
typeof null // object
typeof [] // object
typeof {} // object
typeof funcion(){} // function
typeof Symbol() // symbol
typeof 42n // bigint
...
缺点:
1. typeof null为
object(js历史bug)
2. typeof判断引用类型,除
function
会被识别出来之外,其余都识别为object
二、instanceof(有坑)
语法:实例对象 instanceof 构造函数
原理:检测构造函数的 prototype
属性是否出现在某个实例对象的原型链上
返回值:true/false
示例:
[] instanceof Array // true
const n1 = new Number(1) // 构造函数构建
n1 instanceof Number; // true
const n2 = 1 // 语法糖构建
n2 instanceof Number; // false
...
缺点:
因为语法糖构建的变量没有确切的构造函数,instanceof检测不出来。
三、Object.prototype.toString.call()(无坑,推荐)
语法:Object.prototype.toString.call(xxx)
返回值:[object xxx]
示例:
Object.prototype.toString.call(1); // [object Number]
Object.prototype.toString.call("abc"); // [object String]
Object.prototype.toString.call([])); // [object Array]
Object.prototype.toString.call({}); // [object Object]
Object.prototype.toString.call(true); // [object Boolean]
Object.prototype.toString.call(undefined); // [object Undefined]
Object.prototype.toString.call(null); // [object Null]
Object.prototype.toString.call(new Date()); // [object Date]
Object.prototype.toString.call(function(){}); // [object Function]
...
- END -
感谢你花费宝贵的时间阅读本文,文章在撰写过程中难免有疏漏和错误,欢迎你在下方留言指出文章的不足之处;如果觉得这篇文章对你有用,也欢迎你点赞和留下你的评论哦。