//代码如下:
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-2026 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,然后再参考问题1通常判断一个变量存在与否
aaa == null,这里用的是==,其实这个表达式就体现了JS的undefined和null,还有===和==他们之间的关系。哈哈 推荐你看一下javascript高级编程 这本书,看完之后 这些通通不是问题!