-
相同点
if 判断语句中,两者都会被转换为false -
不同点
(1)Number转换的值不同
Number(null)输出为0, Number(undefined)输出为NaN
(2)null表示一个值被定义了,但是这个值是空值
1.作为函数的参数,表示函数的参数不是对象
2.作为对象原型链的终点 (Object.getPrototypeOf(Object.prototype))
3.定义一个值为null是合理的,但定义为undefined不合理(var name = null)
undefined的情况:
1.undefined表示缺少值,即此处应该有值,但是还没有定义
2.变量被声明了还没有赋值,就为undefined
3.调用函数时应该提供的参数还没有提供,该参数就等于undefined
4.对象没有赋值的属性,该属性的值就等于undefined
5.函数没有返回值,默认返回undefined
示例代码:
var i;
i // undefined
function f(x){console.log(x)}
f() // undefined
var o = new Object();
o.p // undefined
var x = f();
x // undefined