js typeof和instanceof的區別

2021-07-12 03:56:11 字數 1106 閱讀 2667

typeof是乙個一元運算,放在乙個運算數前面,運算數可以是任意型別的數

返回值一般有這幾個:number,boolean,string,function,object,undefined

實際應用中通常用來獲取乙個變數是否存在,if(typeof a!='undefined'); 不要用if(a){}這樣的方式判斷是否存在,如果不存在會報錯,而且有bug,如果a是0

那麼得到的結果一樣是false,因為0會轉換成false。

那麼為什麼不用typeof來判斷乙個變數的型別呢?string,number這些事可以的,但是array,null這些特殊物件使用typeof通通得到的都是乙個object,這往往不是我們

想要的結果,這就是typeof的侷限性,所以我們會用另外乙個來判斷,instanceof來判斷

instanceof是用來判斷某個物件是不是另乙個類的例項

function aa(){}

var a=new aa();

var b={};

a instanceof aa;   //true a是aa的乙個例項

b instanceof aa;   //false b不是aa的例項額,但是它是object的例項,所以,b instanceo object;   //true

注意instanceof測試的object是指js語法中的object,dom節點的object不能起作用:

window instanceof object;    //false   因為window是dom模型的物件,不是js語法中的物件,但是typeof這個時候就能用上了:typeof window;//object

說多乙個插曲 ,   函式的arguments很多人都誤以為是陣列,其實不是:

證明:function testarg()

testarg(2,4,5)

[2, 4, 5]   //arguments列印出來的確實是陣列的形式,但是通過檢測證明了它其實是乙個物件

false     // arguments in array;

true      // arguments in object;

object  // typeof arguments

今天就扯到這,打完收工

理解JavaScript中的instanceof

我們先寫這樣乙個例子 function girl girl.prototype function boy boy.prototype var boy1 new boy alert boy1 instanceof boy true alert boy1 instanceof object true b...

js typeof 的深入了解

我們都知道,typeof的作用是辨別傳入值的型別 我們需要注意的是 typeof的返回值統一都是全小寫的字串 下面列舉了typeof函式可以識別的型別以及場景 話不多說,直接進入 undefined 1 未定義物件將會被識別為underfined 2 乙個函式沒有返回值 boolean false ...

JS typeof 型別判斷 判斷是否是陣列

typeof undefined undefined typeof null object typeof 1,2 object typeof object typeof 123 string typeof 1 number typeof true boolean typeof array funct...