JavaScript中undefined與null的區別

一般狀況下, 當咱們試圖訪問某個不存在的或者沒有賦值的變量時,就會獲得一個undefined值。Javascript會自動將聲明是沒有進行初始化的變量設爲undifined。javascript

若是一個變量根本不存在會發生什麼事:html

>>> foo
ReferenceError: foo is not defined

咱們獲得了一個錯誤信息。咱們在該變量上用typeof操做符看看它是什麼類型:java

>>> typeof foo
"undefined"

咱們獲得的結果爲字符串「undefined」。spa

若是咱們聲明一個變量時沒有對其進行賦值,調用該變量時並不會出錯,但typeof操做符依然會返回字符串「undefined」。code

>>> var somevar;
>>> somevar;
undefined
>>> typeof somevar;
"undefined"

 

而null值就徹底是另一回事啦。 他不能經過javascript來自動賦值,也就是說必需要咱們本身手動來給某個變量賦值爲null:htm

>>> var somevar = null;
>>> somevar;
null

並且,typeof操做符返回的是一個對象!對象

>>> typeof somevar;
"object"

 

雖說,undefine與null之間的差異不是很大,可是他們在一些算數運算中表現得很是不同:ip

>>> var i = 1 + undefined;  i;
NaN
>>> var i = 1 + null;  i;
1

這是由於undefined和null在被轉換爲其餘基本類型時,方法存在必定的區別,下面咱們給出一些可能的轉換類型。rem

轉換爲數字(把undefined看作字符串,null看作0):字符串

>>> 1 * undefined;
NaN
>>> 1 * null;
0

轉換爲布爾值:

>>> !!undefined;
false
>>> !!null;
false
    轉換爲字符串(都相應的轉換爲字符串):
>>> ''+undefined;
"undefined"
>>> ''+null;
"null"

以上就是undefined與null的區別,以及在運算是要注意的地方。

相關文章
相關標籤/搜索