(一)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 返回布...