js判斷資料型別幾種方法

2021-10-01 08:28:40 字數 3286 閱讀 9298

js資料型別的判斷主要有四種方法:typeof、instanceof、constructor、object.prototype.tostring.call()。

資料型別的包括:number、boolean、string、symbol、object、array、undefined、null、function等9種資料型別

7種資料型別有包含:基本型別值和引用型別值。 基本資料型別指的是簡單的資料段,而引用資料型別指那些可能有多個值組成的對。

基本型別(值型別)

複雜型別(引用型別)

引用型別的值是儲存在記憶體中的物件。與其他語言不同,js不允許直接訪問記憶體中的位置,也就是說不能直接操作物件的記憶體空間。 操作物件時,實際上是在操作物件的引用而不是實際的物件。(這種說法不太嚴謹,為物件新增屬性時,操作的是實際的物件)。

值型別與引用型別的差別

1.typeof

檢測基本資料型別的最佳選擇是使用typeof

eg:typeof symbol(); // symbol 有效

typeof 『』; //string 有效

typeof 1; //number 有效

typeof true; //boolean 有效

typeof undefined; //undefined 有效

typeof new function(); //function 有效

typeof null; // object 無效

typeof ; // object 無效

typeof new date(); // object 無效

typeof new regexp(); // object 無效

返回乙個表示資料型別的字串,返回結果包括:number、boolean、string、symbol、object、undefined、function等7種資料型別,但不能判斷null、array

由結果可知,除了在檢測null時返回 object 和檢測function時放回function。對於引用型別返回均為object

2.instanceof

檢測引用型資料型別時的最佳選擇是instanceof

eg: instanceof array; //true

{} instanceof object; //true

new boolean instanceof boolean; // true

new date() instanceof date; //true

new regexp() instanceof regexp; //true

null instanceof null; // 報錯

undefined instanceof undefined; // 報錯

用來判斷a是否為b的例項,a instanceof b, 返回 boolean 值。instanceof 用來測試乙個物件在其原型鏈中是否存在乙個建構函式的 prototype 屬性,但它不能檢測 null 和 undefined

3.constructor

檢視物件對應的建構函式

object的每個例項都具有屬性constructor,儲存著用於建立當前物件的函式。

eg:console.log(bool.constructor === boolean); //true

console.log(num.constructor === number); //true

console.log(str.constructor === string); //true

console.log(arr.constructor === array); //true

console.log(obj.constructor === object); //true

console.log(fun.constructor === function); //true

undefined和null沒有contructor屬性

constructor不能判斷undefined和null,並且使用它是不安全的,因為contructor的指向是可以改變的。

4.object.prototype.tostring.call()

一般資料型別都能夠判斷,最準確最常用的一種

eg:console.log(object.prototype.tostring.call(bool)); // [object boolean]

console.log(object.prototype.tostring.call(num)); // [object number]

console.log(object.prototype.tostring.call(str)); // [object string]

console.log(object.prototype.tostring.call(und)); // [object undefined]

console.log(object.prototype.tostring.call(nul)); // [object null]

console.log(object.prototype.tostring.call(arr)); // [object array]

console.log(object.prototype.tostring.call(obj)); // [object object]

console.log(object.prototype.tostring.call(fun)); // [object function]

console.log(object.prototype.tostring.call(new date())) ; // [object date]

console.log(object.prototype.tostring.call(new regexp())) ; // [object regexp]

console.log(object.prototype.tostring.call(new error())) ; // [object error]

js判斷資料型別的幾種方法

判斷js中的資料型別有一下幾種方法 typeof instanceof constructor prototype type jquery.type 接下來主要比較一下這幾種方法的異同。先舉幾個例子 var a iamstring.var b 222 var c 1,2,3 var d new da...

js判斷資料型別的幾種方法

1.typeof 鑑於 ecmascript 是鬆散型別的,因此需要有種手段來檢測給定變數的資料型別,typeof 就是負責提供這方面資訊的操作符。對乙個值使用 typeof 操作符可能返回下列某個字串 缺點 對於陣列和物件或null 都會返回object undefined 如果這個值未定義 bo...

判斷資料型別幾種方法

常用的判斷資料型別的方法主要有 typeof,instanceof,constructor,object.prototype.tostring 下面來分別介紹 1 typeof 返回乙個字串,表示未經計算的運算元的型別。console.log typeof 42 number 缺點 對於陣列和物件或...