js的基本数据类型

本文详细介绍了JavaScript中的基本数据类型(包括ES6的symbol)与引用数据类型,以及如何使用typeof和instanceof进行数据类型判断。此外,还探讨了不同数据类型的比较规律,包括隐式转换规则,并给出了具体的比较示例。最后,文章提供了一个自定义的typeof函数用于更准确地判断数据类型。
摘要由CSDN通过智能技术生成

js的基本数据类型:string,boolean,number,null,undefined,symbol(ES6)

引用数据类型:Object

判断基本数据类型:typeof ,需要注意的是null返回Object
且不能判断数组类型 (坑)会判断为object类型。

判断引用类型:instanceof ,判断对象的原型 任何function 和 Object都有一个原型Object

typeof []//为object

判断数据类型函数:

let _typeof = function (data) {
    let value = /\[object (\w+)\]/.exec(
        Object.prototype.toString.call(data)
    );
    return value ? value[1].toLowerCase() : '';
}
_typeof('123')      //"string"
_typeof(123)        //"number"
_typeof(123n)       //"bigint"
_typeof(null)       //"null"
_typeof(undefined)  //"undefined"
_typeof({})         //"object"
_typeof([])         //"array"
_typeof(/123/)      //"regexp"

各数据类型比较规律
先看例子

 console.log([]==false)// true
   console.log(![]==false);//true
 //  这个我也没搞懂
 console.log(false == "");// true
 
 console.log({}==[])// false
 console.log({}=={})// false
  console.log([]==[])// false
 
 console.log([]=="")// true
 //[].toString() 为 ‘‘ 
 console.log([]==0)// true 

各数据类型比较规律:

1.如果是不同类型的数据进行,会默认进行数据类型之间的转换;

如果只有一个操作值是数值,则将另一个操作值转换为数值,进行数值比较
如果一个操作数是对象,则调用valueOf()方法(如果对象没有valueOf()方法则调用toString()方法),得到的结果按照前面的规则执行比较

  • 若X是null,Y是undefined,则输出结果为True
  • 若x是number,Y是string ,则将字符串转换为数字再进行判断
  • 若x是boolean,Y是其他类型,则先将Boolean转换为数字再进行判断
  • 若x是Object,Y是Number或者String,则先将对象转化为字符串或数字,再进行判断

除了上述几种类型,其余的输出结果都是False
2.如果是对象数据类型的比较,比较的是空间地址

isNaN(undefined) 为 true
是因为isNaN在判断之前会把参数先转换成number类型
undefined转化为number即NaN。所以为true。

null==undefined//true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值