javascript中類型判斷的最佳方式
javascript有8種數(shù)據(jù)類型
值類型
- Number
- Null
- Undefined
- String
- Symbol
- Boolean
- BigInt
引用類型
- Object
- Array
- Function
判斷數(shù)據(jù)類型有以下4種判斷方法
第一種方式: typeof
typeof null ---> "object"
typeof undefined ---> "undefined"
typeof true | false ---> 'boolean'
typeof 42 ---> 'number'
typeof "42" ---> 'string'
typeof { name : '1'} | [] ---> 'object'
typeof Symbol ---> 'symbol'
typeof ()=>{} ---> 'function'
typeof void 0 ---> 'undefined'第二種方式 instanceof 但是這種方式只適合判斷object類型
instanceof運(yùn)算符用來判斷一個(gè)構(gòu)造函數(shù)的prototype屬性所指向的對(duì)象是否存在另外一個(gè)要檢測(cè)對(duì)象的原型鏈上
詳細(xì)介紹請(qǐng)看這里:javascript中的instanceof運(yùn)算符
比如 : var arr = [] ; arr instanceof Array ---> true null instanceof Object ---> false [function] instanceof Object | Function --> true
第三種方式 Object.prototype.toString.call() 這種方式可以將全部的數(shù)據(jù)類型檢測(cè)出來 也是 推薦的方式
因?yàn)閠oString是Object的原型方法, 而 Array Function 等都是Object的實(shí)例。都重寫了toString 方法。返回的是類型的字符串
Object.prototype.toString.call(null) ---> [object Null]
Object.prototupe.toString.call(undefined) ---> [object Undefined]
Object.prototype.toString.call(123) ---> [object Number]
Object.prototype.toString.call(true) ---> [object Boolean]
Object.prototype.toString.call('123') ---> [object String]
Object.prototype.toString.call({}) ---> [object Object]
Object.prototype.toString.call([]) ---> [object Array]
Object.prototype.toString.call(Math) ---> [object Math]
Object.prototype.toString.call(function(){}) ---> [object Function]
Objdec.prototype.toString.call(new Date) ---> [object Date]
Object.prototype.toString.call(Symbol()) ---> [object Symbol]第四種方式: constructor 判斷對(duì)象的構(gòu)造函。
1. null 是js 原型鏈的起點(diǎn),沒有構(gòu)造函數(shù) 2. undefined 沒有構(gòu)造函數(shù) 3. [].constructor === Array ---> true 4. [string].constructor === String 5. [object].constructor === object 6. [number].constructor === Number 7. [symbol].constructor === Symbol 8. [function].constructor === Function 9. [new Date].constructor === Date 10. [RegExp].constructor === RegExp
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js+css實(shí)現(xiàn)回到頂部按鈕(back to top)
這篇文章主要為大家詳細(xì)介紹了js+css實(shí)現(xiàn)回到頂部按鈕back to top回到頂部按鈕,感興趣的小伙伴們可以參考一下2016-03-03
asp錯(cuò)誤 '80040e21' 多步 OLE DB&nbs
今天在寫asp入庫(kù)操作的時(shí)候提示Microsoft OLE DB Provider for ODBC Drivers 錯(cuò)誤 80040e21 多步 OLE DB 操作產(chǎn)生錯(cuò)誤,請(qǐng)檢查每個(gè) OLE DB 狀態(tài)值,經(jīng)測(cè)試時(shí)函數(shù)定義文件沒有加載導(dǎo)致類型不對(duì),所以無法入庫(kù)2023-05-05
15 個(gè) JavaScript Web UI 庫(kù)
本文介紹了 15 個(gè)非常強(qiáng)大的 JavaScript Web UI 庫(kù),非常適合各種各種規(guī)模的富 Web 應(yīng)用的開發(fā)。2010-05-05
xmlplus組件設(shè)計(jì)系列之路由(ViewStack)(7)
xmlplus 是一個(gè)JavaScript框架,用于快速開發(fā)前后端項(xiàng)目。這篇文章主要介紹了xmlplus組件設(shè)計(jì)系列之路由,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)上的浮動(dòng)廣告的簡(jiǎn)單方法
JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)上的浮動(dòng)廣告的簡(jiǎn)單方法,需要的朋友可以參考一下2013-06-06

