深入理解javascript之null和undefined

javascript中有两个容易让人忽略的问题,就是null==undefined和null!==undefined。

javascript中语法规定==是判断值是否相等,===是判断值和类型是否相等。

这里需要加以区分,undefined表示没有赋值的基本数据类型;null表示没有赋值的引用数据类型

示例代码:

 

var age; 
var id = 100; 
var div02 = document.getElementById("div02");//注:div02是不存在的 
var div01 = document.getElementById("div01");//注:div01存在 
alert(id);//100 
alert(age);//undefined 
alert(div02);//null 
alert(div01);//object

内存分配图:



可以看到,null是处理引用的,它在堆中,而undefined是处理原始值的,它在栈中。

null表示没有对象,就是说该处不应该有值,

undefined表示缺少值,就是此处应该有一个值,但是还没有定义。

 

这里要强调一点的是,null参与数据运算时其值会自动转换为0,而undefined参与时其结果一定是NaN。

这里还要提到一个小技巧就是我们可以通过String()方法来判断一个值是否是null或undefined:

var a , b = null;
String(a);//undefined
String(b);//null

顺带说一下js中的falsetrue

//false
console.log(Boolean(''));//false
console.log(Boolean(null));//false
console.log(Boolean(undefined));//false
console.log(Boolean(0));//false
console.log(Boolean(false));//false
console.log(Boolean(NaN));//false
//true
console.log(Boolean(' '));//true    
console.log(Boolean('NaN'));//true


除了falsenullundefined,空字符串",数字0NaN以外,其他所有值都被当做是真,包括true,字符串""里包含的值,以及所有对象。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值