亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript中的isXX系列是否繼續(xù)使用的分析

 更新時(shí)間:2011年04月16日 23:30:56   作者:  
我們很容易被漂亮的代碼吸引,也不知不覺(jué)的在自己的代碼庫(kù)中加入這些。卻沒(méi)有冷靜的想過(guò)它們的優(yōu)劣。這不,我就收集了一系列形如 “是否為……?” 的判斷的boolean函數(shù)。
復(fù)制代碼 代碼如下:

isNull: function(a){
return a === null;
},
isUndefined: function(a){
return a === undefined;
},
isNumber: function(a){
return typeof a === 'number';
},
isString: function(a){
return typeof a === 'string';
},
isBoolean: function(a){
return typeof a === 'boolean';
},
isPrimitive: function(b){
var a = typeof b;
return !!(b === undefined || b === null || a == 'boolean' || a == 'number' || a == 'string');
},
isArray: function(a){
return proto_obj.toString.call(a) === '[object Array]';
},
isFunction: function(a){
return proto_obj.toString.call(a) === '[object Function]';
},
isPlainObject: function(o){
if (!o || o === win || o === doc || o === doc.body) {
return false;
}
return 'isPrototypeOf' in o && proto_obj.toString.call(o) === '[object Object]';
},
isWindow: function(o){
return o && typeof o === 'object' && 'setInterval' in o;
},
isEmptyObject: function(o){
for(var a in o) {
return false;
}
return true;
}

以上isXX系列中,isUndefined在類庫(kù)中用的最多。如判斷是否傳入了某個(gè)參數(shù),判斷對(duì)象是否擁有某個(gè)屬性等等。但這個(gè)函數(shù)是不必存在,我已將其移除。理由如下
1,isUndefined 與 使用全等(===)或typeof 多了一層函數(shù)調(diào)用。很明顯多一層函數(shù)調(diào)用比直接使用原生的運(yùn)算符效率會(huì)低(雖然有些微不足道),但如果isUndefined調(diào)用次數(shù)很多如上萬(wàn)次還是很明顯的。我曾經(jīng)在郵箱框架中加入了該函數(shù),調(diào)用次數(shù)有4000多次,從性能分析工具看占用了近1%的時(shí)間。僅僅一個(gè)判斷占1%的調(diào)用時(shí)間還是很可怕的。當(dāng)然,郵箱框架內(nèi)的isUndefined處在多層閉包的頂層,訪問(wèn)其也會(huì)占用較多時(shí)間。如果這一條還不足以讓你放棄isUndefined,請(qǐng)看下面。
2,函數(shù)從一定程度上是對(duì)一些代碼的封裝,抽象。是組織良好代碼的方式之一,且有利于降低代碼的復(fù)雜性。但isNull/isUndefined/isBoolean/isNumber/isString函數(shù)內(nèi)僅有一句,抽象層次很低。因此完全不必封裝而提取出一個(gè)函數(shù)。
3,isUndefined(a) 與 a === undefined相比并不會(huì)節(jié)省幾個(gè)字節(jié)(呵,你可以命名的更短但損失了可讀性)。

綜上,我去掉了類庫(kù)中對(duì)基本類型判斷的isNull/isUndefined/isBoolean/isNumber/isString,需要用到這些判斷的時(shí)候直接使用typeof運(yùn)算符等。

相關(guān)文章

  • 使用layui前端框架彈出form表單以及提交的示例

    使用layui前端框架彈出form表單以及提交的示例

    今天小編就為大家分享一篇使用layui前端框架彈出form表單以及提交的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • 微信小程序?qū)崿F(xiàn)自定義拍攝組件

    微信小程序?qū)崿F(xiàn)自定義拍攝組件

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)自定義拍攝組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 12種JavaScript常用的MVC框架比較分析

    12種JavaScript常用的MVC框架比較分析

    這篇文章主要介紹了12種JavaScript常用的MVC框架比較分析,以獨(dú)特的視角分析了12中常見(jiàn)的JavaScript MVC框架各種優(yōu)缺點(diǎn),具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • javascript實(shí)現(xiàn)rgb顏色轉(zhuǎn)換成16進(jìn)制格式

    javascript實(shí)現(xiàn)rgb顏色轉(zhuǎn)換成16進(jìn)制格式

    本文給大家分享的是使用javascript實(shí)現(xiàn)rgb顏色轉(zhuǎn)換成16進(jìn)制格式的方法和示例代碼,有需要的小伙伴可以參考下。
    2015-07-07
  • PHP abstract與interface之間的區(qū)別

    PHP abstract與interface之間的區(qū)別

    本文是對(duì)PHP中abstract與interface之間的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-11-11
  • JavaScript避免嵌套代碼淺析

    JavaScript避免嵌套代碼淺析

    這篇文章主要介紹了JavaScript避免嵌套代碼,很多時(shí)候需要編寫(xiě)的邏輯本身就很惡心, 乍看之下, 堆頁(yè)巖般的判定嵌套里似乎每一層都是必要的, 也只能說(shuō)盡量讓它看起來(lái)不那么惡心
    2023-02-02
  • js中Math之random,round,ceil,floor的用法總結(jié)

    js中Math之random,round,ceil,floor的用法總結(jié)

    本篇文章是對(duì)js中Math之random,round,ceil,floor的用法進(jìn)行了總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • JS關(guān)鍵字球狀旋轉(zhuǎn)效果的實(shí)例代碼

    JS關(guān)鍵字球狀旋轉(zhuǎn)效果的實(shí)例代碼

    這篇文章主要介紹了JS關(guān)鍵字球狀旋轉(zhuǎn)效果的實(shí)例代碼。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-11-11
  • 新手快速入門(mén)JavaScript裝飾者模式與AOP

    新手快速入門(mén)JavaScript裝飾者模式與AOP

    這篇文章主要介紹了新手快速入門(mén)JavaScript裝飾者模式與AOP,在不改變對(duì)象)的情況下動(dòng)態(tài)的為其添加功能,這就是裝飾者模式,下面小編帶大家來(lái)深入學(xué)習(xí)一下吧
    2019-06-06
  • Javascript實(shí)現(xiàn)購(gòu)物車功能的詳細(xì)代碼

    Javascript實(shí)現(xiàn)購(gòu)物車功能的詳細(xì)代碼

    這篇文章使用js實(shí)現(xiàn)購(gòu)物車的價(jià)格計(jì)算,商品數(shù)量更換,商品刪除等功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評(píng)論