判斷JS型別

2021-10-14 02:10:47 字數 2472 閱讀 5182

(一)js的型別

js的基本型別共有七種:bigint(bigint是一種內建物件,是處symbol外的第二個內建型別)、number、string、boolen、symbol、undefined、null。複雜資料型別有物件(object)包括基本的物件、函式(function)、陣列(array)和內建物件(data等)。

(二)判斷js的型別

方法一、typeof方法

基本資料型別除了null外都返回對應型別的字串。

typeof 1 // "number" 

typeof 'a' // "string"

typeof true // "boolean"

typeof undefined // "undefined"

typeof symbol() // "symbol"

typeof 42n // "bigint"

注:判斷乙個變數是否被宣告可以用(typeof 變數 === 「undefined」)來判斷

null返回「object」

typeof null // "object"

因為歷史遺留的原因。typeof null 嘗試返回為null失敗了,所以要記住,typeof null返回的是object。

特殊值nan返回的是 "number"

typeof nan // "number"

而複雜資料型別裡,除了函式返回了"function"其他均返回「object」

typeof() // "object" 普通物件直接返回「object」

typeof [1,3] // 陣列返回"object"

typeof(new date) // 內建物件 "object"

函式返回"function"

typeof function(){} // "function"

所以我們可以發現,typeof可以判斷基本資料型別,但是難以判斷除了函式以外的複雜資料型別。於是我們可以使用第二種方法,通常用來判斷複雜資料型別,也可以用來判斷基本資料型別。

方法二、object.property.tostring.call方法 ,他返回"[object, 型別]",注意返回的格式及大小寫,前面是小寫,後面是首字母大寫。

基本資料型別都能返回相應的型別。

object.prototype.tostring.call(999) // "[object number]"

object.prototype.tostring.call('') // "[object string]"

object.prototype.tostring.call(symbol()) // "[object symbol]"

object.prototype.tostring.call(42n) // "[object bigint]"

object.prototype.tostring.call(null) // "[object null]"

object.prototype.tostring.call(undefined) // "[object undefined]"

object.prototype.tostring.call(true) // "[object boolean]

複雜資料型別也能返回相應的型別

object.prototype.tostring.call() // "[object object]"

object.prototype.tostring.call([1,2]) // "[object array]"

object.prototype.tostring.call(new date) // "[object date]"

object.prototype.tostring.call(function(){}) // "[object function]"

這個方法可以返回內建型別

方法三、obj instanceof object ,可以左邊放你要判斷的內容,右邊放型別來進行js型別判斷,只能用來判斷複雜資料型別,因為instanceof 是用於檢測建構函式(右邊)的 prototype 屬性是否出現在某個例項物件(左邊)的原型鏈上。

[1,2] instanceof array  // true

(function(){}) instanceof function // true

() instanceof object // true

(new date) instanceof date // true

obj instanceof object方法也可以判斷內建物件。

缺點:在不同window或者iframe間,不能使用instanceof。

其他方法:除了以上三種方法,還有constructor方法 和 duck type方法,具體在文章就不介紹了,個人覺得吃透分清上面三種方法已經足夠了。

js型別判斷

typeoftypeof 返回值有七種可能 number,string,boolean,object,function,undefined,symbol 侷限性 對於array,null等特殊物件使用typeof一律返回object。numbers typeof 37 number typeof m...

js型別判斷

js型別判斷,有如下三種 1 typeof 2 instanceof 3 object.prototype.tostring.call 4 arg.proto contructor.name 以判斷陣列為例,有如下幾種方法 function isarray arg return arg instan...

JS型別判斷

假設要判斷的變數是a 判斷nan 方法一 isnan a 函式,返回布林值 方法二 a!a 原理 不等於自身 typeof a 返回資料型別 null會返回object 引用型別 function會返回function,其他返回object instanceof a instanceof b 返回布...