JavaScript中typeof和instanceof的區別和聯繫

typeof

解釋: typeof是一個一元運算符,放在一個運算數之前,運算數可以是任意類型,返回值是字符串,說明運算符的類型,可通過typeof來判斷一個變量是否存在

typeof返回值: number,string,undefined,object,boolean,function,symbol(ES6新增)

Tip: 在判斷一個引用類型的變量時,無論是什麼引用類型都返回object。這時候就需要instanceof來檢測某個對象是不是另一個對象的實例。

案例:

console.log(typeof (123))           // number
console.log(typeof ("123"))         // string
console.log( typeof new Object())   //object
console.log(typeof(a))              //未定義,返回undefined
console.log(typeof(Symbol()))       //symbol
console.log(typeof new Function())  //返回function
console.log(typeof(null)+'---'+typeof(Object())+'---'+typeof([]))    //null、對象、數組會返回object 

instanceof

解釋: instanceof用來判斷某個構造函數的 prototype 屬性所指向的對象是否存在於另外一個要檢測對象的原型鏈上,也就是用於判斷一個變量是否是屬於個對象的實例。返回值是布爾類型

案例:

var arr=new Array()
console.log(arr instanceof Array)   //true
console.log(arr instanceof Object)  //true  因爲Object是所有對象的基類
console.log(arr instanceof RegExp)  //false

總結:

typeof和instanceof的目的都是檢測變量的類型,兩個的區別在於typeof一般是檢測的是基本數據類型,instanceof主要檢測的是引用類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章