javascript判斷變數的資料型別程式碼例項

antzone發表於2017-04-13

本章節介紹一下如何判斷一個變數的資料型別。

使用typeof只能夠精確判斷值型別和函式的型別,但是對於其他物件和null則無法區分。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
console.log(typeof {}); 
console.log(typeof []); 
console.log(typeof 8 ); 
console.log(typeof "antzone"); 
console.log(typeof function(){});
console.log(typeof null );
console.log(typeof new Date());
console.log(typeof /antzone/);

下面分享一個能夠實現精準獲取資料型別的方式,程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var type = function (o){
  var s = Object.prototype.toString.call(o);
  return s.match(/\[object (.*?)\]/)[1].toLowerCase();
};
console.log(type({}));
console.log(type([]));
console.log(type(8));
console.log(type("antzone"));
console.log(type(function () { }));
console.log(type(null));
console.log(type(new Date()));
console.log(type(/antzone/));

上面的程式碼實現了精確的判斷功能,之所以會這樣關鍵在於Object.prototype.toString()方法的威力。

看它能獲取什麼:

[JavaScript] 純文字檢視 複製程式碼
console.log(Object.prototype.toString.call(new Date()));
console.log(Object.prototype.toString.call(/antzone/));

它能夠獲取一個物件的真正的class型別,然後在擷取字串就可以了。

相關文章