首先說一下JS的六大基本資料類型:undefined null boolean number string object(Array也是對象)。
當然 ES6 标準又新添了一個類型:Symbols,這裡不談。
對于undefined boolean number string 這四種類型的判斷,都可以使用 typeof 解決,如下
var a;
console.log(typeof a); //undefined
var a = true;
console.log(typeof a); //boolean
var a = 119;
console.log(typeof a); //number
var a = "Jams";
console.log(typeof a); //string
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL2MTOxAjNxEjM1IzMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
可以看到,使用 typeof 能夠有效的判斷出這四種資料類型
并且 typeof 還可以判斷 function 函數類型,如自定義函數 或者 Date,eval 等已定義好的函數.
var a = function(){};
console.log(typeof a); //function
console.log(typeof Date); //function
console.log(typeof eval); //function
而對于null object 還有數組對象就無法精确判斷,隻能顯示object
var a = null;
console.log(typeof(a)); //object
var a = document;
console.log(typeof a); //object
var a = ['string','number','NaN']
console.log(typeof a); //object
對于 null、document 我們可以使用 === 判斷,既判斷類型又判斷内容
var a = null;
console.log(a === null);
var a = document;
console.log(a === document);
那我們應該如何去精确判斷數組對象類型呢?
接下來就輪到 instanceof 登場了!
instanceof 文法:b instanceof A
instanceof 解釋:判斷 b 是否是 A 的執行個體或者 A 的子類的執行個體
var a = ['string','number','NaN']
console.log(a instanceof Array);
a 是 Array 的執行個體,故結果為 true.
再舉個例子:
function Foo(){}
var f1 = new Foo();
console.log(f1 instanceof Foo);
console.log(f1 instanceof Object);
結果是 true true.
Object是所有對象的基類。
轉載請注明出處。