js 布尔值转换和数据类型的简单判断
引言
通常情况下js的布尔值转换和数据类型判断是一个比较容易犯错的问题,现在我们结合对照表来简单梳理一下
一、js 布尔值转换
一、==的情况下转换
二、数据类型和布尔值的转换
数据类型 | 能转换为true | 能转化为false |
---|---|---|
boolean | ture | false |
string | 任何非空字符 | “” |
number | 任何非零数字值 | 0和NaN |
obj | 任何对象 | null |
undefined | — | undefined |
arr | 任何数组 | null |
三、判断数据类型的方法
1、typeof
数据类型 | typeof结果 |
---|---|
string | string |
number | number |
booleam | boolean |
undefind | undefind |
functuon | function |
obj | obj |
null | obj |
arr | obj |
用法:
typeof() // 适合判断除null外的基本数据类型,不适合判断obj、arr、function等引用类型
2、instanceof
用法:
obj instanceof Object // true
arr instanceof Array //true
pattern instanceof RegExp //true
注意事项以及适用范围:
- 引用用类型所有值都是obj的事例,所以所以引用类型instanceof Object都为ture
- 可以判断是否为引用类型,或者是否为数组
缺点:
instanceof会从原型链一直往上查找,假如有个obj的继承的原型是Array,此时obj instanceof Array
为true,显示是错的
3、toString方法
用法
Object.prototype.toString.call([]) // [Object Array]
判断数据类型最优的方法
4、其他判断
- Array.isArray 是否是数组
- Number.isNaN 是否为NaN。tip:另外一个方法判断NaN,如果a=NaN 则 a !== ajic
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1249118795@qq.com