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主要檢測的是引用類型