前面提到「變數本身沒有型別問題,變數帶的值才有型別資訊」,所以要判斷型別,當然是去檢查變數所帶的值。
我們可以這樣來判斷變數的型別:
typeof '洪七公'; //'string'
typeof 7749; //'number'
typeof NaN; //'number'
typeof true //'boolean'
typeof {}; //'object'
typeof []; //'object'
typeof null; //'object'
用typeof檢查資料型別,回傳的都是字串,如果是為宣告的變數則回傳'undefined'。
比較特別的是:
typeof NaN; //'number'
假設楊康這個小屁孩在應該填寫數字的表單裡面打了一堆亂碼,回傳給JavaScript判斷,parseInt()之後會給我們NaN的結果,此時就不能使用(typeof(xx) ! == number)來判斷,因為遇到 typeof NaN的回傳值會是'number'。
※ parseInt()可以用來將資料轉為整數,由字串最左邊開始轉換,一值轉換到字串結束或遇到非數字字元為止。
這時要使用 isNaN() 來判斷傳回的資料是否為'NaN',如果不是,傳回的是false,才進行後面的計算。
因為使用typeof去檢查陣列,得到的結果會是 'object',所以該如何正確地判斷某個變數為陣列,而非物件?
這時要使用 isArray() 這個方法。
array.isArray([]); //true
array.isArray(['東邪','西毒','北丐','南帝','中神通']); //true
array.isArray({}); //false