最初的JS學習已經過去大半年的時間了,至此感覺對JS的使用與理解并不是很深入,因此在最近的工作之余也開始了新一輪的JS學習。幾天時間過去了,對于一些基礎內容的學習還是很有必要的,就從今天的重新整理開始吧。
對于JavaScript數據類型,開始并沒有全面的認識,只是簡單的使用var關鍵字來定義變量。現在了解到使用var聲明變量的方法是JavaScript的語言核心ECMAScript為JS定義的,雖然可隨意改變該變量的值,不考慮其數據類型,但這就帶來了后期維護的困難,以及性能不高、成本很高的問題。這樣看來使用var隨意聲明變量有利也有弊了。
ECMAScript中定義了六種數據類型:Undefined、Null、Boolean、Number、String、Object(注意JavaScript是區分大小寫的,類型的首字母都要求大寫,這與后面介紹的類型值是不同的),不支持任何創建自定義類型機制,所有值都會是以上六種數據類型之一。下面我們分別來看。
## 一、Undefined
該類型只有一個值undefined,當變量聲明后但沒有對其進行初始化時,則該變量的值為undefined。未初始化的變量自動賦值為undefined。
var box;
alert(box);??????? //彈窗顯示undefined值
## 二、Null
值為null,表示空對象的引用,若定義變量用于存儲對象,則可初始化為null值。在進行判斷變量是否指向對象時可用null值進行等值比較。
與值undefined的關系:undefined繼承于null值,ECMA規范中規定只定義未初始化的undefined值與執行空對象引用的null值是相等的,思考下,兩個變量值都表示為空,比較時可理解為相等。但各自的類型還是不能混為一談的。
## 三、Boolean
擁有true和false兩個值,但其他各類型都可顯式或隱士的轉換為該類型值,以用作if條件判斷或者其他,這里只介紹轉換規則

## 四、Number
包含整型和浮點型,輸入數值字面量可分為幾種格式:十進制、十六進制(以0x開頭)、八進制(以0開頭),而二進制表示則可采用通用的方法parseInt("**",2),輸出數據時則會默認顯示為十進制數。其他值:Infinity(正無窮)及-Infinity(負無窮);NaN值(Not a Number)。
~~~
??????轉型:
??????????????? Number():可用于任何數據類型
??????????????????????????????alert(Number(true));//1,Boolean 類型的 true 和 false 分別轉換成 1 和 0
??????????????????????????????alert(Number(25));//25,數值型直接返回
??????????????????????????????alert(Number(null));//0,空對象返回 0
??????????????????????????????alert(Number(undefined));//NaN,undefined 返回 NaN
??????????????????????????????alert(Number('')); //字符串為空,轉為0
???????????????parseInt():字符串轉整型、parseFloat():字符串轉浮點型??????????
?????????????????????????????alert(parsetInt('456Lee'));//456,會返回整數部分
?????????????????????????????alert(parsetInt('Lee456Lee'));//NaN,如果第一個不是數值,就返回 NaN
?????????????????????????????alert(parseInt('12Lee56Lee'));//12,從第一數值開始取,到最后一個連續數值結束
?????????????????????????????alert(parseInt('56.12'));//56,小數點不是數值,會被去掉
?????????????????????????????alert(parseInt(''));//NaN,空返回 NaN
~~~
## 五、String
用于表示由零個或多個16位Unicode字符表示的字符串序列。
轉型:
toString()方法可將其他類型值轉換為字符串,參數可選(轉換數值時,可添加進制類型)
String()方法,可將任何類型的值轉為字符串,即使是null或undefined的情況
## 六、Object
??????對象的概念在此不再多講,后面對專門探討。創建的方式有兩種:
~~~
var box = new Object();
var? box = {};
~~~
## 小結:
對于數據類型的學習,以前并沒有太過于重視,只是懂了簡單的應用,現在學習起來這部分的內容還是感覺有很多需要值得推敲的部分,比如數據類型之間的轉換,數據存儲的優化等都會對程序實現起到很重要的作用,所以多深入一些基礎方面的東西還是很有必要的。