【JavaScript】undefined和null两种数据类型的区别

在ECMAScript规范中,一共定义了7种数据类型,对于它的分类方法也有很多,下面总结了一种简单清晰的分类方法:
1、基本类型:布尔,数值,字符串,undefined , null , Symbol
2、引用类型:Object

其中undefined和null他们俩数值都只有他们本身,且值都是空的意思,这个怎么理解呢?

  • undefined:未定义。当变量只声明,但是没有赋值,此时默认值为undefined
  • null:有定义,定义的值为空值

相同点:

  • (1)值相等
console.log( undefined == null )//true
  • (2)转布尔类型都是false
console.log( Boolean(undefined) )//false
console.log( Boolean(null) )//false

不同点:

  • (1)数据类型不同
console.log( undefined === null )//false     
  • (2)转换为Number类型的值不同
console.log( Number(undefined) )//NaN
console.log( Number(null) )//0

例子:

console.log( undefined == null )//true
console.log( undefined === null )//false     

为什么会出现上面的这种情况呢?
因为双等号是先判断数据类型是否相等,如果数据类型不相等的话,要先进行强制转换,比如说console.log(18 == ‘18’) 此时它这个里面就已经做了这个隐式转换。 undefined == null因为两者都默认转换成了false(双等于是判断两边的值是否相等,此时中间还有隐式转换)
而 三等于,他是直接判断数据类型,数据类型不同直接返回false(三等于是全等,用来判断两边的值和数据类型是否完全相等)

undefined 和 undeclared的区别

var a; // undefined
b;     // b is not defined

区别:在变量作用域中已经申明但没有赋值的变量(如 a),是undefined。相反,在变量作用域中没有申明过的变量,是undeclared。
我们试图访问“undeclared ”变量时这样报错:ReferenceError: b is not defined。并且typeof 对undefined 和 undeclared 变量返回的都是undefined。其实“ undefined” 和“ is not defined ”是两码事。

总结:

  • undefined相当于期房。 买了房,但是房子还没建出来。(未定义)
  • null相当于毛坯房。买了房,但是房子没住人,里面是空的。(空值)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值