來自:http://www.yurendu.com/182.htmlhtml
摘自:李戰《悟透JavaScript》編程
要理解JavaScript,你得首先放下對象和類的概念,回到數據和代碼的本原。前面說過,編程世界只有數據和代碼兩種基本元素,而這兩種元素又有着糾纏不清的關係。ide
JavaScript就是把數據和代碼都簡化到最原始的程度。JavaScript中的數據很簡潔的。簡單數據只有 undefined, null, boolean, number和string這五種,而複雜數據只有一種,即object。這就比如中國古典的樸素惟物思想,把世界最基本的元素歸爲金木水火土,其餘複雜的物質都是由這五種基本元素組成。函數
JavaScript中的代碼只體現爲一種形式,就是function。spa
注意:以上單詞都是小寫的,不要和Number, String, Object, Function等JavaScript內置函數混淆了。要知道,JavaScript語言是區分大小寫的呀!orm
任何一個JavaScript的標識、常量、變量和參數都只是unfined, null, bool, number, string, object 和 function類型中的一種,也就typeof返回值代表的類型。除此以外沒有其餘類型了。htm
先說說簡單數據類型吧。對象
undefined | 表明一切未知的事物,啥都沒有,沒法想象,代碼也就更沒法去處理了ip 注意:typeof(undefined) 返回也是 undefined。能夠將undefined賦值給任何變量或屬性,但並不意味了清除了該變量,反而會所以多了一個屬性。ci |
null | 有那麼一個概念,但沒有東西。無中似有,有中還無。雖不可思議,但已經能夠用代碼來處理了 注意:typeof(null)返回object,但null並不是object,具備null值的變量也並不是object。 |
boolean | 是就是,非就非,沒有疑義。對就對,錯就錯,絕對明確。既能被代碼處理,也能夠控制代碼的流程。 |
number | 線性的事物,大小和次序分明,多而不亂。便於代碼進行批量處理,也控制代碼的迭代和循環等 注意: typeof(NaN)和typeof(Infinity)都返回number NaN參與任何數值計算的結構都是NaN,並且 NaN != NaN Infinity / Infinity = NaN |
string | 面向人類的理性事物,而不是機器信號。人機信息溝通,代碼據此理解人的意圖等等,都靠它了。 |
簡單類型都不是對象,JavaScript沒有將對象化的能力賦予這些簡單類型。直接被賦予簡單類型常量值的標識符、變量和參數都不是一個對象。
所謂「對象化」,就是能夠將數據和代碼組織成複雜結構的能力。JavaScript中只有object類型和function類型提供了對象化的能力。