【JS數據類型】JS中的判斷數據類型函數

一、JS中的基本數據類型
string、boolean、null、undefined、number,symbol(ES6)
基本數據類型通常指的是直接利用字面量的方式進行賦值的情況,其中要注意的是,對於已經初始化的基本數據類型(即var a = 1234),是可以直接調用其對應對象的方法的,再調用方法的時其本質是瀏覽器實現了對基本數據類型的裝箱和拆箱操作,再調用方法時將其轉換爲對引得對象,調用完畢之後還原爲基本數據類型。
但是對於沒有進行初始化的變量是不能直接調用對象方法的,因爲程序無法判斷其數據類型:
2.toString()該方法會報錯,但是2..toString()不會,因爲2.表示其實number類型,所以可以成功的進行裝箱拆箱操作進而可以調用相關的方法。
二、判斷數據類型的函數
1、 利用typeof運算符時其中只有null是異常的,typeof(null)=object,所以在判斷變量類型是否爲null時要注意。同時利用typeof時對於沒有聲明的變量是不會報錯的,返回值爲undefined。全局變量和函數變量在沒有聲明時使用是會報錯的,但是在對象中使用沒有定義的屬性是不會報錯同樣返回的是undefined。Function變量是具有length屬性的,其長度爲傳入的參數的個數。
2、 利用JS中的對象如Object,String等利用new方式生成的變量,用typeof判斷其類型時均爲object但是,typeof Object、typeof Function、typeof String均爲function,因爲這些對象均是構造函數。對於未定義或者是未聲明的變量利用typeof操作符結果均是undefined,對於沒有聲明的變量,只有typeof一種運算,雖然在非嚴格模式下delete未聲明的變量不會報錯但不推薦使用。

var a =new String("133");
typeof(a)  //object

3、 變量是弱類型的,即其本身是沒有類型的,其值纔是具有類型的。
綜上所訴利用typeof進行類型判斷並非萬全之策
利用Object.prototype.toString.call()的方式進行變量類型判斷比較合適:

Object.prototype.toString.call(new RegExp())
"[object RegExp]"
Object.prototype.toString.call(new String())
"[object String]"
Object.prototype.toString.call("123")
"[object String]"

不論是基本數據類型還是Object的數據類型的變量通過第二個參數均可以判斷出數據的類型來。是不是很好的方法!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章