javascript中如何判斷類(lèi)型匯總
前言
我們?cè)趯?xiě)封裝的插件或者函數(shù)時(shí),常常用到JS的數(shù)據(jù)類(lèi)型判斷,典型的案例就是深度拷貝函數(shù)用到數(shù)據(jù)類(lèi)型判斷,這個(gè)知識(shí)點(diǎn)在面試的時(shí)候也是經(jīng)常考到的一個(gè)問(wèn)題。本文就來(lái)給大家總結(jié)了下javascript中判斷類(lèi)型的相關(guān)資料,下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧
String
一個(gè)字符串始終是一個(gè)字符串,所以這一塊是很容易。除非使用new(new String)調(diào)用,否則typeof將返回“object”。所以也要包含那些可以使用的字符串instanceof。
// Returns if a value is a string function isString (value) { return typeof value === 'string' || value instanceof String; }
Number
From typeof more things than just an ordinary number will return "number" like NaN and Infinity. To know if a value really is a number the function isFinite is also required.
從類(lèi)型更多的東西,而不僅僅是普通的數(shù)字將返回像NaN和無(wú)限的“數(shù)字”。要知道值是否真的是數(shù)字,函數(shù)isFinite也是必需的。
// Returns if a value is really a number function isNumber (value) { return typeof value === 'number' && isFinite(value); }
Array
在javascript 數(shù)組中不是像java和其他語(yǔ)言中那樣的真正數(shù)組。它們實(shí)際上是對(duì)象,因此typeof將為它們返回“對(duì)象”。要知道某些東西是否真的是一個(gè)數(shù)組,它的構(gòu)造函數(shù)可以與Array進(jìn)行比較。
// Returns if a value is an array function isArray (value) { return value && typeof value === 'object' && value.constructor === Array; } // ES5 actually has a method for this (ie9+) Array.isArray(value);
Function
// Returns if a value is a function function isFunction (value) { return typeof value === 'function'; }
Object
很多東西都是javascript中的對(duì)象。要知道值是否是可以具有屬性并循環(huán)的對(duì)象,可以將其構(gòu)造函數(shù)與Object進(jìn)行比較。它不適用于從類(lèi)創(chuàng)建的對(duì)象,因此可以使用instanceof運(yùn)算符。
// Returns if a value is an object function isObject (value) { return value && typeof value === 'object' && value.constructor === Object; }
Null & undefined
大多數(shù)情況下,您不需要顯式檢查null和undefined,因?yàn)樗鼈兌际羌僦?。然而,要做到這一點(diǎn),下面的功能就可以了。
// Returns if a value is null function isNull (value) { return value === null; } // Returns if a value is undefined function isUndefined (value) { return typeof value === 'undefined'; }
Boolean
對(duì)于布爾值, typeof就足夠了,因?yàn)樗祷豻rue和false的“boolean”。
// Returns if a value is a boolean function isBoolean (value) { return typeof value === 'boolean'; }
RegExp
RegExp是對(duì)象,因此唯一需要檢查的是構(gòu)造函數(shù)是否為RegExp。
// Returns if a value is a regexp function isRegExp (value) { return value && typeof value === 'object' && value.constructor === RegExp; }
Error
javascript中的錯(cuò)誤與許多其他編程語(yǔ)言中的“異?!毕嗤K鼈冇袔追N不同的形式,例如Error,TypeError和RangeError。一個(gè)instanceof語(yǔ)句對(duì)他們來(lái)說(shuō)已經(jīng)足夠了,但我們還要確保我們還檢查錯(cuò)誤所具有的“message”屬性。
// Returns if value is an error object function isError (value) { return value instanceof Error && typeof value.message !== 'undefined'; }
Date
日期實(shí)際上不是javascript中的數(shù)據(jù)類(lèi)型。但要知道是否有某個(gè)Date對(duì)象,可以使用instanceof進(jìn)行檢查。
// Returns if value is a date object function isDate (value) { return value instanceof Date; }
Symbol
// Returns if a Symbol function isSymbol (value) { return typeof value === 'symbol'; }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
- 五種js判斷是否為整數(shù)類(lèi)型方式
- js判斷undefined類(lèi)型,undefined,null, 的區(qū)別詳細(xì)解析
- 客戶(hù)端js判斷文件類(lèi)型和文件大小即限制上傳大小
- js判斷數(shù)據(jù)類(lèi)型如判斷是否為數(shù)組是否為字符串等等
- JS通過(guò)分析userAgent屬性來(lái)判斷瀏覽器的類(lèi)型及版本
- JavaScript判斷輸入是否為數(shù)字類(lèi)型的方法總結(jié)
- 通過(guò)JS判斷聯(lián)網(wǎng)類(lèi)型和連接狀態(tài)的實(shí)現(xiàn)代碼
- js 判斷各種數(shù)據(jù)類(lèi)型的簡(jiǎn)單方法(推薦)
- 利用js判斷瀏覽器類(lèi)型(是否為IE,Firefox,Opera瀏覽器)
- JS如何判斷瀏覽器類(lèi)型和詳細(xì)區(qū)分IE各版本瀏覽器
相關(guān)文章
JavaScript實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)飄落的雪花
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)飄落的雪花,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06javascript實(shí)現(xiàn)簡(jiǎn)易計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)簡(jiǎn)易計(jì)算器功能,實(shí)現(xiàn)四則運(yùn)算,小數(shù)點(diǎn),回退,歸0等功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09layui實(shí)現(xiàn)三級(jí)導(dǎo)航菜單
這篇文章主要為大家詳細(xì)介紹了layui實(shí)現(xiàn)三級(jí)導(dǎo)航菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07ECMA5數(shù)組的新增方法有哪些及forEach()模仿實(shí)現(xiàn)
這篇文章主要介紹了ECMA5數(shù)組的新增方法有哪些及forEach()模仿實(shí)現(xiàn),需要的朋友可以參考下2015-11-11微信小程序開(kāi)發(fā)常用功能點(diǎn)與使用方法總結(jié)
最近收集了一些小程序開(kāi)發(fā)中常用到的知識(shí)點(diǎn),記錄一下,所以下面這篇文章主要給大家介紹了關(guān)于微信小程序開(kāi)發(fā)常用功能點(diǎn)與使用方法的相關(guān)資料,需要的朋友可以參考下2021-10-10原生js實(shí)現(xiàn)移動(dòng)小球(碰撞檢測(cè))
這篇文章主要介紹了原生js實(shí)現(xiàn)會(huì)動(dòng)的小球,碰撞檢測(cè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12JS驗(yàn)證輸入的是否是數(shù)字及保留幾位小數(shù)問(wèn)題
這篇文章主要介紹了JS驗(yàn)證輸入的是否是數(shù)字及保留幾位小數(shù)問(wèn)題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05TypeScript基本類(lèi)型之typeof和keyof詳解
typeof 在js中typeof是檢查類(lèi)型的,在ts中也有這個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于TypeScript基本類(lèi)型之typeof和keyof的相關(guān)資料,需要的朋友可以參考下2023-04-04