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

有时候会经常碰见让你判断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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • @synthesize和@dynamic分别有什么作用?@property有两个对应的词,一个是 @synthes...
    笔笔请求阅读 3,511评论 0 1
  • 猜想runloop内部是如何实现的?一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一...
    笔笔请求阅读 3,165评论 0 0
  • 熬夜看完一步之遥,不错,很有艺术性的一部电影,也不怪一般没有艺术欣赏能力的人看不懂。姜文确实不同一般的电影人,有思...
    姜牧之5373阅读 1,410评论 0 0
  • 如何播放视频 iOS提供了MPMoviePlayerController、MPMoviePlayerViewCon...
    走道牙的人阅读 1,547评论 0 0
  • 重回,梦回的题材总是在网络小说中,没有想到毕业六年了,还会有机会再次回到校园,体验一把集体生活,享受一段军事化管...
    媛小医阅读 1,105评论 0 0