数组
let arr = []
在进行if 判断数组时:
在new Array()一个空数组时,是一个Object对象,所以if(arr)时是true
在进行数组直接与true和false的布尔类型比较时,默认是将数组和布尔类型都转化为了Number类型进行比较,空数组转化为Number类型时为0。
可以通过arr == true来判断不为空,也可以通过arr.length !== 0来判断数组不为空。
![在这里插入图片描述](https://img-blog.csdnimg.cn/4cc8e51b1bed42769af7be732cba00e2.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/e8358a5b3dcf48d6b155b8ad3e3a9c84.png)
判断类型:toString 最完美的方法
toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。
对于 Object 对象,直接调用 toString() 就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。
判断类型举例:
复制代码
Object.prototype.toString.call(’’) ; // [object String]
Object.prototype.toString.call(1) ; // [object Number]
Object.prototype.toString.call(true) ; // [object Boolean]
Object.prototype.toString.call(Symbol()); //[object Symbol]
Object.prototype.toString.call(undefined) ; // [object Undefined]
Object.prototype.toString.call(null) ; // [object Null]
Object.prototype.toString.call(new Function()) ; // [object Function]
Object.prototype.toString.call(new Date()) ; // [object Date]
Object.prototype.toString.call([]) ; // [object Array]
Object.prototype.toString.call(new RegExp()) ; // [object RegExp]
Object.prototype.toString.call(new Error()) ; // [object Error]
Object.prototype.toString.call(document) ; // [object HTMLDocument]
Object.prototype.toString.call(window) ; //[object global] window 是全局对象 global 的引用
如果想直接获取正确结果,可以:
Object.prototype.toString.call(xxx).slice(8,-1)
使用slice截取字符串
![在这里插入图片描述](https://img-blog.csdnimg.cn/216cac5074af46b08203b0f93007e168.png)