成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js中檢查數(shù)據(jù)類型最佳實(shí)踐

cpupro / 1692人閱讀

摘要:如果想要檢查原始數(shù)據(jù)類型之外的任何內(nèi)容,我們可能一些額外的檢查技巧,例如判斷構(gòu)造函數(shù)。它們實(shí)際上是對(duì)象,會(huì)為它們返回要知道某個(gè)東西是否真的是數(shù)組,可以將其構(gòu)造函數(shù)與數(shù)組進(jìn)行比較。是對(duì)象,因此唯一需要檢查的是構(gòu)造函數(shù)是否為。

Javascript中檢查數(shù)據(jù)類型一直是老生常談的問題,今天俺看了一篇國(guó)外的文章總結(jié)了實(shí)際開發(fā)中常見的幾種技巧,俺覺得講的很不錯(cuò),因此跟大家一起分享。

檢查js中數(shù)據(jù)類型不是想的那么簡(jiǎn)單。js語言中本身提供了typeof 運(yùn)算符,typeof操作符返回一個(gè)字符串,表示未經(jīng)計(jì)算的操作數(shù)的類型。typeof操作符返回一個(gè)字符串,表示未經(jīng)計(jì)算的操作數(shù)的類型。

然而,javascript數(shù)據(jù)類型和typeof運(yùn)算符并不完美。很多時(shí)候都不是我們預(yù)想的結(jié)果, 例如,對(duì)于數(shù)組和null,返回“object”。如果想要檢查原始數(shù)據(jù)類型之外的任何內(nèi)容,我們可能一些額外的檢查技巧,例如判斷構(gòu)造函數(shù)。
String
字符串總是一個(gè)字符串,所以檢查字符串很簡(jiǎn)單。 如果使用new(new String)調(diào)用,typeof將返回“object”。 所以也要包含那些可以使用的字符串instanceof。

function isString (value) {
   return typeof value === "string" || value instanceof String;
}

Number
從typeof中得到的不僅僅是一個(gè)普通的數(shù)字,還會(huì)返回“number”,比如NaN和Infinity。要知道一個(gè)值是否真的是一個(gè)數(shù)字,還需要使用isFinite來判斷數(shù)字是否有限。

function isNumber (value) {
   return typeof value === "number" && isFinite(value);
}

Array
在javascript中,數(shù)組不像在java和其他語言中那樣是真正的數(shù)組。它們實(shí)際上是對(duì)象,typeof會(huì)為它們返回"object"要知道某個(gè)東西是否真的是數(shù)組,可以將其構(gòu)造函數(shù)與數(shù)組進(jìn)行比較。

function isArray (value) {
   return value && typeof value === "object" && value.constructor === Array;
}

// ES5可以使用該方法 IE9以上
Array.isArray(value);

Function
在js中判斷函數(shù)使用typeof就可以了。

function isFunction (value) {
   return typeof value === "function";
}

Object
javascript中的很多東西都是對(duì)象。要知道一個(gè)值是否是一個(gè)可以具有屬性并循環(huán)遍歷的對(duì)象,可以將其構(gòu)造函數(shù)與對(duì)象進(jìn)行比較。它不適用于用class創(chuàng)建的對(duì)象,使用class創(chuàng)建的對(duì)象可以使用instanceof操作符來判斷。

function isObject (value) {
   return value && typeof value === "object" && value.constructor === Object;
}

Null 和 undefined
大多數(shù)時(shí)候,您不需要顯式地檢查null和undefined,因?yàn)樗鼈兌际羌僦?。不過,在下面的函數(shù)中這樣做就可以了。

// 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ì)于boolean typeof檢查符也足夠用來檢查了。

// 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ò)誤與許多其他編程語言中的“異?!毕嗤K鼈冇袃煞N不同的形式,例如Error、TypeError和RangeError。對(duì)于它們來說,一個(gè)instanceof語句就足夠了,但是為了確保我們還檢查了錯(cuò)誤具有的“message”屬性。

// Returns if value is an error object
function isError (value) {
   return value instanceof Error && typeof value.message !== "undefined";
}

Date
Date在javascript中并不是真正的數(shù)據(jù)類型。但是要知道某個(gè)對(duì)象是否是Date對(duì)象,可以使用instanceof進(jìn)行檢查。

// Returns if value is a date object
function isDate (value) {
   return value instanceof Date;
}

Symbol
ES6新增的Symbol,用typeof就足夠了。

// Returns if a Symbol
function isSymbol (value) {
return typeof value === "symbol";
}

歡迎大家一起學(xué)習(xí)討論,歡迎訪問我的博客。
原文鏈接:https://www.pipipi.net/code/1...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106453.html

相關(guān)文章

  • JS學(xué)習(xí)筆記(第24章)(最佳實(shí)踐

    摘要:大多數(shù)情況下,可以是同局部變量完成相同的事情而不引入新的作用域。選擇正確的方法避免不必要的屬性查找一旦多次用到屬性對(duì)象,應(yīng)該將其存儲(chǔ)在局部變量中。盡可能多的使用局部變量將屬性查找替換為值查找。 1、可維護(hù)性 1.1 可維護(hù)代碼特征 1. 可理解性 2. 直觀性 3. 可適應(yīng)性 4. 可擴(kuò)展性 5. 可調(diào)試性 1.2 代碼約定 1、可讀性(代碼縮進(jìn)和代碼注釋) 2、變量和函數(shù)命名 變量...

    cnTomato 評(píng)論0 收藏0
  • React.js 最佳實(shí)踐(2016)_鏈接修正版

    摘要:譯者按最近依舊如火如荼相信大家都躍躍欲試我們團(tuán)隊(duì)也開始在領(lǐng)域有所嘗試年應(yīng)該是逐漸走向成熟的一年讓我們一起來看看國(guó)外的開發(fā)者們都總結(jié)了哪些最佳實(shí)踐年在全世界都有很多關(guān)于新的更新和開發(fā)者大會(huì)的討論關(guān)于去年的重要事件請(qǐng)參考那么年最有趣的問題來了我 譯者按:最近React(web/native)依舊如火如荼,相信大家都躍躍欲試,我們團(tuán)隊(duì)也開始在React領(lǐng)域有所嘗試. 2016年應(yīng)該是Reac...

    syoya 評(píng)論0 收藏0
  • 摸索 JS 內(nèi)深拷貝的最佳實(shí)踐

    摘要:想要簡(jiǎn)單點(diǎn)難道我深拷貝一個(gè)變量還要引入這么麻煩嗎沒有簡(jiǎn)單點(diǎn)的辦法嗎嗯,可能有點(diǎn)不是那么酷炫,但是他確實(shí)可以滿足要求,而且也無須引入其他的庫(kù)。 問題 由于 js 的傳參方式有時(shí)會(huì)遇到這樣的場(chǎng)景: function setTime(data) { let result = {}; result.obj = data.obj || {}; result.obj.time = Da...

    Jonathan Shieber 評(píng)論0 收藏0
  • 高程3總結(jié)#第24章最佳實(shí)踐

    摘要:也就是說避免屬性查找或其他的操作。簡(jiǎn)化循環(huán)體循環(huán)體是執(zhí)行最多的,所以要確保其被最大限度地優(yōu)化。代碼組織組織代碼要考慮到可維護(hù)性并不一定是傳送給瀏覽器的最好方式。 最佳實(shí)踐 可維護(hù)性 什么是可維護(hù)性的代碼 如果說代碼是可維護(hù)的,它需要遵循以下特點(diǎn) 可理解性——其他人可以接手代碼并理解它的意圖和一般途徑,而無需原開發(fā)人員的完整解釋。 直觀性——代碼中的東西一看就能明白,不管其操作過程多...

    zhiwei 評(píng)論0 收藏0
  • 9項(xiàng)你不得不知道的Kubernetes安全最佳實(shí)踐

    摘要:今年年初,由于控制臺(tái)中的配置錯(cuò)誤,特斯拉被一個(gè)惡意挖掘加密貨幣的軟件所感染。為了幫助您完成這項(xiàng)工作,本文將為您介紹項(xiàng)安全最佳實(shí)踐。授權(quán)失敗可能意味著攻擊者試圖濫用被盜憑據(jù)。 上個(gè)月,全球最受歡迎的容器編排引擎Kubernetes,被爆出首個(gè)嚴(yán)重的安全漏洞,使得整個(gè)Kubernetes生態(tài)發(fā)生震蕩。該漏洞(CVE-2018-1002105)使攻擊者能夠通過Kubernetes API服務(wù)...

    wslongchen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<