JavaScript中undefined與null的區別


通常情況下, 當我們試圖訪問某個不存在的或者沒有賦值的變量時,就會得到一個undefined值。Javascript會自動將聲明是沒有進行初始化的變量設為undifined。

如果一個變量根本不存在會發生什么事:

>>> foo
ReferenceError: 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的區別,以及在運算是要注意的地方。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM