js檢測資料型別

2021-08-08 20:41:16 字數 1458 閱讀 7257

要檢測乙個變數是不是基本資料型別?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...