0," ",false空值与null,undefined假值

2017-10-12  本文已影响0人  柠檬不萌5120

有时候会经常碰见让你判断0," ",false,null,undefined间的关系,===还好说,一遇见==就会比较头疼。以特意好好查了查总结一下。

一、类型检测

    alert(typeof(false) === 'boolean');   //true
    alert(typeof(0) === 'number');   //true
    alert(typeof("") === 'string');   //true
    alert(typeof(null) === 'object');   //true
    alert(typeof undefined === 'undefined');   //true

二、互等性

    alert(false == undefined);  //false
    alert(false == null);  //false
    alert(null == undefined);  //true
    alert(false == 0);  //true
    alert(false == "");  //true
    alert(0 == "");  //true

你会发现, 只有0和空字符串等于false;undefined和null对象并不等于false对象,而null和undefined是相等的。

我们可以把0、空字符串和false归为一类,称为"假值";把null和undefined归为一类,称为"空值"。假值还算一个有效的对象,因此可以对其使用toString等类型相关的方法,而空值则不行,会抛出异常。

三、假值和空值作为if条件分支

假值和空值有一个共性,那就是在 作为if的条件分支时,均被视为false ;应用"!"操作之后得到的均为true 。

这是因为,这几个对象均被视为各自类型中的无效值或空值。因此if分支中这些对象均被视为false对待。

四、null和undefined的区别

undefined和null对象无非是两个特殊对象,undefined表示无效对象,null表示空对象。

你可以简单理解为:null起码是个对象,虽然里边什么也没有,但是undefined啥都不是,只是声明了但是没有初始化。

    alert(1+undefined);    //NaN
    alert(1+null);             //1

所以上面一段代码也好理解了,1与一个都不知道是什么的东西相加必然是NaN,而1与一个空的对象相加还是1。

详细的,可以细看原文章:http://www.imkevinyang.com/2009/07/javascript-%E4%B8%AD%E7%9A%84false%E9%9B%B6%E5%80%BCnullundefined%E5%92%8C%E7%A9%BA%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%AF%B9%E8%B1%A1.html

上一篇 下一篇

猜你喜欢

热点阅读