undefined
当我们试图访问某个未定义或未初始化的变量时,会得到一个undefined,JavaScript会自动将声明时没有进行初始化的变量设为undefined.
- 当试图使用一个不存在(未声明)的变量时,就会得到以下错误信息:
foo
这时,在变量上使用typeof操作符,就会得到字符串"undefined"
typeof foo
- 如果我们声明一个变量时没有对其进行初始化(赋值),调用变量时并不会出错,但typeof操作符仍然会返回"undefined".
var i;
i;
typeof i
null
null不能通过JavaScript来自动赋值,只能通过写代码来完成,使用typeof操作符会得到"object"如:
var k = null
k
typeof k
其他异同
- 执行某种算术运算符(+-*/%等)时,结果不同
var i = 1 + undefined; i
var i = 1 + null; i;
这是因为null和undefined在被转换为其他基本类型(numer, boolean, string)时存在一定的区别.
转换为数字:
1 * undefined
1 * null
转换为布尔:
!!undefined
!!null
转换为字符串:
'' + undefined
'' + null
参考文献:JavaScript面向对象编程指南