typeof 與 instanceof之間的區別

2021-09-26 03:26:31 字數 1371 閱讀 9844

js中會使用typeof 和 instanceof來判斷乙個變數是否為空或者是什麼型別的。

es6規範中有7種資料型別,分別是基本型別和引用型別兩大類

基本型別(簡單型別、原始型別):string、number、boolean、null、undefined、symbol

引用型別(複雜型別):object(物件、function、array)

1、typeof返回結果是該型別的字串形式表示(number、string、undefined、boolean、function、object)

注意

2、instanceof是用來判斷 a 是否為 b 的例項,表示式為:a instanceof b,如果 a 是 b 的例項,則返回 true,否則返回 false。 在這裡需要特別注意的是:instanceof 檢測的是原型。 

例子

instanceof array; //true

{} instanceof object;//true

new date() instanceof date;//true

function person(){};

new person() instanceof person;

instanceof object; //true

new date() instanceof object;//true

new person instanceof object;//true

但是instanceof可以判斷出是array的例項,同時也認為是object的例項,why????

instanceof 只能用來判斷兩個物件是否屬於例項關係, 而不能判斷乙個物件例項具體屬於哪種型別。

之後增加了array.isarray()方法判斷這個值是不是陣列的。

總結一下:

1、typeof能夠檢測出了null之外的原型型別(string、number、boolean、undefined),對於物件型別能判斷出function、其他的都為object

2、判斷乙個值是否為陣列,使用array.isarray()

3、如果需要判斷乙個值是否為null,最直接就是與null比較

value === null;    //true or false

注意這裡需要三等號操作符「===」,因為三等號操作符在進行比較的時候不會將變數強制轉換為另一種型別。

由此可見,無論是typeof還是instanceof都不能準確判斷出正確的型別。

JS基礎之typeof和instanceof用法

在js中當不確定運算元的型別時,可以通過typeof 函式返回變數的型別。typeof 函式會把型別資訊當做字串返回,且typeof的返回值有六種情況,這六種返回值型別分別是 typeof的使用 舉例說明 console.log typeof null object console.log type...

Pipe類與Instance類介紹

pipe類與instance類介紹 章芝青 抽象類pipe,是所有pipe類的父類,這些類的作用就是將資料從一種形式轉成另一種形式。在特徵提取階段,pipe類是最常用的。pipe類操縱instance類,instance類是描述資料的類,也是十分重要的乙個類。每乙個instance包括四個預定義的域...

instance恢復概覽

instance恢復概覽 相關動態檢視 oracle 伺服器提供許多標準檢視以獲取有關資料庫和例程的資訊。這些檢視包括 v sga 查詢有關例程的以下各項的大小 共享池 日誌緩衝區 資料緩衝區快取記憶體以及固定記憶體大小 取決於作業系統 v instance 查詢例程的狀態,如例程模式 例程名 啟動...