null, undefined,"",0,false是什么关系?
null本质上和0,"",false是一类东西,它们都表示一种数据类型的非值。正如0表示数字类型的非值,""表示字符类型的非值一样,null表示完全空的对象,即可以把它看成是对象类型的非值,没有任何属性的对象,({}不是完全空的对象,因为它继承了Object.prototype的属性,有一些自带方法。扩展一点,其实null就是Object.prototype的prototype....)因此typeof null返回object是完全合理的。
而undefined和它们都不同,它表示的就是未定义,还没有初始化,var a,却没有给它赋值,那么它就是undefined。用typeof对它进行操作时,会返回undefined,这表明undefined是自成一派,它是它自己所属数据类型的唯一成员。
在非严格模式下,由于存在自动类型转换,所以所有基本数据类型的非值都被认为是相等的,但它们和undefined都不相等。
例如:0 == false //true;
"" == 0//true;
"" == false//true,因为它们都是一种数据类型的非值,又存在自动转换。
false == undefined //false
0 == undefined //false,因为它们根本不是一类东西
但是这个null,作为一种数据类型(对象类型)的非值又有一点特殊,可能是由于它不是基本类型所以不存在自动转换的缘故,它和0,"",false这些都是不==的。它反而和undefined==,据犀牛书介绍,这两者都表示一种空值,null表示的是一种意料之中的空值,而undefined表示更深层次的,意料之外的空值。
如果用图来表示这些东西的关系,那么"",0,false在一个圈圈里,undefined在另外一个圈圈里,而null则在两个圈圈的交叉部分。
最后,所有上面提到的东西都有一个共同点,即前面加上一个"!"都会返回true。
null, undefined,"",0,false是什么关系?的更多相关文章
- js中 null, undefined, 0,空字符串,false,不全等比较
null == undefined // true null == '' // false null == 0 // false null == false // false undefined = ...
- 简写代码:当变量为false时['',false,null,undefined,0,NaN]时,返回默认值
当变量为'',false,null,undefined,0,NaN时,返回默认值 var a='' a || 'hello world' "hello world" var a ...
- js null, undefined, NaN, ‘’, false, 0, ==, === 全验证
<html> <head> <meta charset="utf-8" /> </head> <body> <in ...
- 区分js中的null,undefined,"",0和false
console.log(typeof null);//object console.log(typeof undefined);//undefined console.log(typeof " ...
- 在js中if条件为null/undefined/0/NaN/""表达式时,统统被解释为false,此外均为true
Boolean 表达式 一个值为 true 或者 false 的表达式.如果需要,非 Boolean 表达式也可以被转换为 Boolean 值,但是要遵循下列规则: 所有的对象都被当作 true. 当 ...
- 你所不知道的 JS: null , undefined, NaN, true==1=="1",false==0=="",null== undefined
1 1 1 === 全相等(全部相等) == 值相等(部分相等) demo: var x=0; undefined var y=false; undefined if(x===y){ console ...
- null,undefined.'',false关系
null == undefined //truefalse =='' //true boolean类型跟其它类型==时,会转换成Number类型 Number类型跟String类型==时,string ...
- 0,null,undefined,[],{},'',false之间的关系
0与一些虚值的比较: 0与false 0==false true 0与'': =='' true 0与[]: ==[] true 0与NaN: 0==NaN false 0与undefined 0== ...
- null、undefined、false、0相等性比较
之前在看<JavaScript权威指南>的时候看到三个相等性比较的式子: null == undefined ;// ==>true undefined == false;// == ...
随机推荐
- 一只小蜜蜂(hdoj 2044,动态规划递推)
Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数.其中,蜂房的结构如下所示. Input 输入数据的第一行 ...
- Python初学者容易忽略的一些细节
1.Python中当让给变量1赋值上变量2的值时,变量1直接指向值在内存中存储的地址,即变量1存储的是变量2的值而不是指向变量 2."""的用法 1.多行注释 2.多行输 ...
- python之cookbook-day01
第一章:数据结构和算法 1.1 解压序列赋值给多个变量 >>> p = (4, 5) >>> x, y = p >>> x 4 >>& ...
- Tree(树的还原以及树的dfs遍历)
紫书:P155 uva 548 You are to determine the value of the leaf node in a given binary tree that is th ...
- DESEncrypt对称加密解密
分享一个很好用的DESEncrypt对称加密解密的类 using System; using System.Security.Cryptography; using System.Text; usin ...
- noip模拟赛 立方数
题目描述LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方数,例如1,8,27就是最小的3个立方数.现在给定一个数P,LYK想要知道这个数是不是立方数.当然你有可 ...
- Ubuntu 16.04设置开机启动应用程序
在终端通过以下命令进行设置,Dash已经搜索不到Startup了: gnome-session-properties 或者直接在Dash中搜索:gnome-session
- Oracle Multitenant Environment (二) Purpose
Purpose of a Multitenant Environment A multitenant environment enables the central management of mul ...
- android 视频开发2分之1(仿美拍,糗百)
近期比較忙,非常久没更新博客,今天我们仿一个美拍或者糗事百科的录像功能. 首先确认步奏: 1.打开摄像头: 2.開始录制: 3.支持分段录制,并支持分段删除: 4.把分段录制的视频进行合并: 不说废话 ...
- redis 主从备份自动切换+java代码实现类
转载:http://blog.csdn.net/qq_23430789/article/details/52185706 目录(?)[-] redis-0sentinel实例之间的通讯端口 maste ...