undefined: 表明一切未知的事物,什麼也不是,連"空"都不是,這種東西代碼沒法處理!
什麼叫沒法處理?
只要有undefined參與的運算最終的結果都不能使用 javascript
在真值判斷中undefined也被解釋爲false,這個什麼也不是的東西,是怎麼也不能解釋爲true的! java
但它倒是全局對象window的一個屬性[alert('undefined' in window);//true];
注意:它不是javascript的關鍵字,這也就意味着你能夠爲一個對象定義一個屬性名字爲"undefined"[obj.undefined=1],可是通常不建議這麼作。
typeof(undefined) 返回也是 undefined。
能夠將undefined賦值給任何變量或屬性,但並不意味了清除了該變量。
若是你從一個undefined的變量中讀取屬性的話,那就等着瀏覽器報錯吧。因此在程序中讀取不肯定的變量的屬性的時候必定要先判斷這個變量是否可用。 瀏覽器
null:空,不存在任何東西,可是程序能夠對他進行處理!
什麼叫能夠處理? spa
注意:typeof(null)返回object(爲何是object,這個真解釋不了,javascript就這麼定義的),但null並不是object,具備null值的變量也並不是object。
在真值運算中null被解釋爲false。[var a=null;if(a){...}else{//走這個}]. orm
boolean:再明確不過的東西,無需解釋。
注意:undefined,null,"",0,NaN在真值運算中都將解析成false!Infinity 卻被解析成true! 對象
number: 數字,包含內置對象,NaN和Infinity
注意:typeof(NaN)和typeof(Infinity)都返回number 。
NaN參與任何數值計算的結構都是NaN,並且 NaN != NaN 。Infinity / Infinity = NaN 。 ip
string: 字符串。任何東西和字符串作+運算都將獲得字符串。 字符串
複雜數據類型
object:在JavaScript中無論多麼複雜的數據和代碼,均可以組織成object形式的對象。 string
function
若是一個變量可以被執行,那麼能夠說這是一個function類型的對象。 it