//代码如下:
var x;
console.log(x === undefined); // 1
console.log(x === null); // 2
console.log(x == undefined); // 3
console.log(x == null); // 4
console.log(null === undefined);// 5
console.log(null == undefined); // 6

- 5和6的结果为什么不同?
- 为什么1和3都是
true但2和4一个false一个true?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
用typeof去测
===比较类型和值
==比较值
1、5和6的结果为什么不同?
null是一个对象,undefined的连对象都不是
2、为什么1和3都是true但2和4一个false一个true?
var x;没有赋值,就是undefined,alert(x);可看出结果
2是false的原因是比较类型造成的false,因为null是对象,undefined不是
4是true的原因是比较值造成,x的值没有,所有二者比较结果一致
1)null/undefined是2个不同的类型
2)当用===(全等)时,2者是因为是不同的类型,所以就不同的
3)当用==(不全等)时,忽略类型的比较,null、undefined按转化的规则,null与undefined相等
==只是值相等就成立,===需要值相等和类型相等才成立。
var x;你申明了x,没有赋值,所以结果就像你输出的这样。
先看下
null和undefined的类型:首先
var了一个变量x,这个变量就是undefined然后就是拿
undefined和null比较啦~===这是完全等于,需要类型一致并且值一致==只需要值一致就OK了,会有隐式类型转换的过程5和6结果为什么不同?
因为
null和undefined的类型不同,所以===不通过1和3都是
true,但2和4一个false一个true?因为
x是undefined,然后再参考问题1ECMAScript 定义了 Undefined、Null、Boolean、String、Number、Object 6种类型,其中 Undefined 和 Null 都是只包含一个值得特殊类型,分别为
undefined和null,因此根据定义undefined和null分属不同类型,使用===运算符返回false,而值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的,所以使用==运算符返回false。进一步讲,当声明的变量未初始化时,该变量的默认值是
undefined,而null则用于表示尚未存在的对象。这其中重要的却别在于任何未初始化的变量自动被赋值undefined,而任何null值必须显式赋值,因此有前四条语句的结果。参考资料:
1. http://www.w3.org/html/ig/zh/wiki/ES5/%E7%B1%BB%E5%9E%8B
2. http://www.w3school.com.cn/js/pro_js_primitivetypes.asp
通常判断一个变量存在与否
aaa == null,这里用的是==,其实这个表达式就体现了JS的undefined和null,还有===和==他们之间的关系。哈哈 推荐你看一下javascript高级编程 这本书,看完之后 这些通通不是问题!