JavaScript有两个不同的空值,null和undefined。
undefined
undefined的意思是,变量的值没有定义, typeof undefined也是”undefined”。undefined只是一个值,并不是一个常量或关键字。
出现undefined的情况:
- 声明未赋值的变量。如:var a;
- 函数由于缺少return语句而隐式返回。如:function fun() {}; var a = fun();
- 显式返回但不包含任何内容的语句。如:function fun() { return; }; var a = fun();
- 查找对象中不存在的属性。
- 未传递的函数参数。
- 任何被设置为undefined的值。
- 任何void形式的表达式。
- 全局变量undefined。window.undefined。
null
null表示空的或不存在的值,程序员用它来表示“没有值”。
null不是一个对象,它是一个基本值,你可以将null赋给任何变量。有时人们错误地认为它是一个对象,因为typeof null返回“object”,事实上并不能给它添加属性。
(typeof null = ‘object’其实是个bug,第一个JavaScript版本遗留下来的问题,具体请参阅:https://2ality.com/2013/10/typeof-null.html)
顺便说一下:
null == undefined // true
null === undefined // false