JavaScript中0, "", null, false, undefined的区别
2013-12-28 00:35
549 查看
JavaScript中0, "", null, false, undefined返回的Boolean类型均为false。然而它们所指的并不是同一个概念,需要加以区分。
首先先看一段代码:
从上述代码可以看出:0是数字类型对象,空字符串是字符串类型对象,null是object对象,false是布尔类型对象,undefined还是undefined类型.。
对于null为什么是一个object对象,这是JavaScript最初实现的一个错误,后来被ECMAScript沿用下来。可以将它理解为一个不存在的对象的占位符。
使用==操作将0和false与其他对象进行比较:
观察可发现:0、""和false是相等的,null和undefined是相等的,而undefined和null并不等于false对象。
可以把0、""和false归为一类,称之为“假值”,把null和undefined归为一类,称之为“空值”。假值还是一个有效的对象,所以可以对其使用toString等类型相关方法,空值则不行。
undefined表示无效对象,null表示空对象。当声明的变量未被初始化时其默认值为undefined;如果被赋予null,则代表变量初始化值为空值。ECMAScript认为undefined是从null派生出来的所以把他们定义为相等。
以下两种方式会输出false:
因为===代表的是绝对等于,判断值及类型是否完全相等。null和undefined各自的type在前面已经说过。
首先先看一段代码:
document.write(typeof(0)) //number document.write(typeof("")) //string document.write(typeof(null)) //object document.write(typeof(false)) //boolean document.write(typeof(undefined)) //undefined
从上述代码可以看出:0是数字类型对象,空字符串是字符串类型对象,null是object对象,false是布尔类型对象,undefined还是undefined类型.。
对于null为什么是一个object对象,这是JavaScript最初实现的一个错误,后来被ECMAScript沿用下来。可以将它理解为一个不存在的对象的占位符。
使用==操作将0和false与其他对象进行比较:
document.write(false==undefined); //false document.write(false==null); //false document.write(undefined==0); //false document.write(null==0); //false document.write(""==0); //true document.write(false==0); //true document.write(false==""); //true document.write(null==undefined); //true
观察可发现:0、""和false是相等的,null和undefined是相等的,而undefined和null并不等于false对象。
可以把0、""和false归为一类,称之为“假值”,把null和undefined归为一类,称之为“空值”。假值还是一个有效的对象,所以可以对其使用toString等类型相关方法,空值则不行。
document.write(false.toString()); // false document.write("".length); // 0 document.write((0).toString()); // 0 document.write(undefined.toString()); // throw exception "undefined has no properties" document.write(null.toString()); // "null has no properties"
undefined表示无效对象,null表示空对象。当声明的变量未被初始化时其默认值为undefined;如果被赋予null,则代表变量初始化值为空值。ECMAScript认为undefined是从null派生出来的所以把他们定义为相等。
以下两种方式会输出false:
document.write(null===undefined); //false document.write(typeof(null)==typeof(undefined)); //false
因为===代表的是绝对等于,判断值及类型是否完全相等。null和undefined各自的type在前面已经说过。
相关文章推荐
- Javascript中的undefined、null、""、0值和false的区别总结
- Javascript中的undefined、null、""、0值和false的区别总结
- Javascript中的undefined、null、""、0值和false的区别总结
- Javascript中的undefined、null、""、0值和false的区别总结
- javascript中0、false、null、undefined、""
- javascript js undefined null 0 false void(0) NaN 空字符串 比较 区别
- javascript 中的undefined,null,”",0和false
- 悟透Javascript undefined,null,"",0这四个值转换为逻辑值时就是false &this关键字
- JavaScript 判断元素为空(null, undefined, NaN,empty string (""),0,false)
- 项目____JavaScript做null、""、undefined判断及==、===的区别
- 深度了解JavaScript的null,undefined, "","0","1",0,1,false,true的操作
- JS中undefined,null,"",0和false的区别
- JavaScript 这类弱类型的语言,在判断相等方面很麻烦,明明不是一个东西,却相等了。这里通过示例展示 null、 undefined、 0、 false、 "" 的相等情况。 var arr
- javascript中的undefined,null,"",0和false的云集
- 区分javascript中的undefined,null,"",0,false和NaN
- 浅谈JavaScript中的undefined、null、0、""和false
- 区分JS中的undefined,null,"",0和false
- Javascript 中的false、0、null、undefined和空字符串对象
- Javascript 中的false、0、null、undefined和空字符串对象
- javascript null和undefined区别