要檢測乙個變數是不是基本資料型別?typeof 操作符是最佳的工具。說得更具體一
點,typeof 操作符是確定乙個變數是字串、數值、布林值,還是undefined 的最佳工具。如果變
量的值是乙個物件或null,則typeof 操作符會像下面例子中所示的那樣返回"object":
var s = "nicholas";
var b = true;
var i = 22;
var u;
var n = null;
var o = new object();
alert(typeof s); //string
alert(typeof i); //number
alert(typeof b); //boolean
alert(typeof u); //undefined
alert(typeof n); //object
alert(typeof o); //object
雖然在檢測基本資料型別時typeof 是非常得力的助手,但在檢測引用型別的值時,這個操作符的
用處不大。通常,我們並不是想知道某個值是物件,而是想知道它是什麼型別的物件。為此,ecmascript
提供了instanceof 操作符,其語法如下所示:
result = variable instanceof constructor
如果變數是給定引用型別(根據它的原型鏈來識別;第6 章將介紹原型鏈)的例項,那麼
instanceof 操作符就會返回true。請看下面的例子:
alert(person instanceof object); // 變數person 是object 嗎?
alert(colors instanceof array); // 變數colors 是array 嗎?
alert(pattern instanceof regexp); // 變數pattern 是regexp 嗎?
根據規定,所有引用型別的值都是object 的例項。因此,在檢測乙個引用型別值和object 構造
函式時,instanceof 操作符始終會返回true。當然,如果使用instanceof 操作符檢測基本型別的
值,則該操作符始終會返回false,因為基本型別不是物件。
值得注意的是:
使用 typeof 操作符檢測函式時,該操作符會返回"function"。在safari 5 及
之前版本和chrome 7 及之前版本中使用typeof 檢測正規表示式時,由於規範的原
因,這個操作符也返回"function"。ecma-262 規定任何在內部實現[[call]]方法
的物件都應該在應用typeof 操作符時返回"function"。由於上述瀏覽器中的正則
表示式也實現了這個方法,因此對正規表示式應用typeof 會返回"function"。在
ie 和firefox 中,對正規表示式應用typeof 會返回"object"。
JS資料型別檢測
在js的日常使用中,經常需要檢測資料的型別,現在,就來看一下,js有哪些方法可以檢測資料的型別。typeof操作符返回乙個字串,表示未經計算的運算元的型別。typeof是js原生提供用來檢測型別的api,然而,並沒有什麼用。為什麼呢?因為,typeof不能準確地檢測出我們所想要知道的資料的型別。ty...
JS 資料型別檢測
tpeof val 用來檢測資料型別的運算子。基於typeof檢測出來的結果 首先是乙個字串 字串中是對應的型別 侷限性 typeof null object 但是null並不是物件 基於typeof 無法細分出當前值是普通物件還是陣列物件等,只要是物件型別,返回結果都是 object typeof...
js檢測資料型別
一 js中資料型別 二 判斷資料型別 下面將對如下資料進行判斷它們的型別 var bool true var num 1 var str abc var und undefined var nul null var arr 1,2,3 var obj var fun function 1.使用typ...