通常情况下, 当我们试图访问某个不存在的或者没有赋值的变量时,就会得到一个undefined值。Javascript会自动将声明是没有进行初始化的变量设为undifined。
如果一个变量根本不存在会发生什么事:
>>> fooReferenceError: foo is not defined
我们得到了一个错误信息。我们在该变量上用typeof操作符看看它是什么类型:
>>> typeof foo"undefined"
我们得到的结果为字符串“undefined”。
如果我们声明一个变量时没有对其进行赋值,调用该变量时并不会出错,但typeof操作符依然会返回字符串“undefined”。
>>> var somevar;>>> somevar;undefined>>> typeof somevar;"undefined"
而null值就完全是另外一回事啦。 他不能通过javascript来自动赋值,也就是说必须要我们自己手动来给某个变量赋值为null:
>>> var somevar = null;>>> somevar;null
而且,typeof操作符返回的是一个对象!
>>> typeof somevar;"object"
虽然说,undefine与null之间的差别不是很大,但是他们在一些算数运算中表现得非常不一样:
>>> var i = 1 + undefined; i;NaN
>>> var i = 1 + null; i;1
这是因为undefined和null在被转换为其他基本类型时,方法存在一定的区别,下面我们给出一些可能的转换类型。
转换为数字(把undefined看做字符串,null看做0):
>>> 1 * undefined;NaN
>>> 1 * null;0
转换为布尔值:
>>> !!undefined;false>>> !!null;false 转换为字符串(都相应的转换为字符串):
>>> ''+undefined;"undefined">>> ''+null;"null"
以上就是undefined与null的区别,以及在运算是要注意的地方。