最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

相關(guān)文章

  • 基于Typescript與Axios的接口請求管理詳解

    基于Typescript與Axios的接口請求管理詳解

    接口是一系列抽象方法的聲明,是一些方法特征的集合,這些方法都應(yīng)該是抽象的,需要由具體的類去實(shí)現(xiàn),然后第三方就可以通過這組抽象方法調(diào)用,讓具體的類執(zhí)行具體的方法,這篇文章主要給大家介紹了基于Typescript與Axios的接口請求管理的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 淺談JS運(yùn)算符&&和|| 及其優(yōu)先級(jí)

    淺談JS運(yùn)算符&&和|| 及其優(yōu)先級(jí)

    下面小編就為大家?guī)硪黄獪\談JS運(yùn)算符&&和|| 及其優(yōu)先級(jí)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • TypeScript?Pinia實(shí)戰(zhàn)分享(Vuex和Pinia對(duì)比梳理總結(jié))

    TypeScript?Pinia實(shí)戰(zhàn)分享(Vuex和Pinia對(duì)比梳理總結(jié))

    這篇文章主要介紹了TypeScript?Pinia實(shí)戰(zhàn)分享(Vuex和Pinia對(duì)比梳理總結(jié)),今天我們再來實(shí)戰(zhàn)下官方推薦的新的vue狀態(tài)管理工具Pini,感興趣的小伙伴可以參考一下
    2022-06-06
  • 改變checkbox默認(rèn)選中狀態(tài)及取值的實(shí)現(xiàn)代碼

    改變checkbox默認(rèn)選中狀態(tài)及取值的實(shí)現(xiàn)代碼

    下面小編就為大家?guī)硪黄淖僣heckbox默認(rèn)選中狀態(tài)及取值的實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • 原生js實(shí)現(xiàn)上傳圖片控件

    原生js實(shí)現(xiàn)上傳圖片控件

    這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)上傳圖片控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Bootstrap組件學(xué)習(xí)之導(dǎo)航、標(biāo)簽、面包屑導(dǎo)航(精品)

    Bootstrap組件學(xué)習(xí)之導(dǎo)航、標(biāo)簽、面包屑導(dǎo)航(精品)

    這篇文章主要介紹了Bootstrap組件學(xué)習(xí)之導(dǎo)航、標(biāo)簽、面包屑導(dǎo)航(精品)的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • JavaScript實(shí)現(xiàn)頁面5秒后自動(dòng)跳轉(zhuǎn)的方法

    JavaScript實(shí)現(xiàn)頁面5秒后自動(dòng)跳轉(zhuǎn)的方法

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)頁面5秒后自動(dòng)跳轉(zhuǎn)的方法,涉及javascript遞歸調(diào)用與計(jì)時(shí)函數(shù)setTimeout的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • JavaScript面試技巧之?dāng)?shù)組的一些不low操作

    JavaScript面試技巧之?dāng)?shù)組的一些不low操作

    這篇文章主要給大家介紹了關(guān)于JavaScript面試技巧之?dāng)?shù)組的一些不low操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 詳解JS如何處理可視區(qū)域圖片懶加載技巧

    詳解JS如何處理可視區(qū)域圖片懶加載技巧

    這篇文章主要為大家介紹了JS如何處理可視區(qū)域圖片懶加載技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • JavaScript中常見的字符串操作函數(shù)及用法匯總

    JavaScript中常見的字符串操作函數(shù)及用法匯總

    這篇文章主要介紹了JavaScript中常見的字符串操作函數(shù)及用法,實(shí)例匯總了javascript常見的字符串轉(zhuǎn)換、分割、查詢、替換等技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-05-05

最新評(píng)論

龙江县| 五峰| 四平市| 永寿县| 斗六市| 鸡泽县| 和政县| 离岛区| 富锦市| 天门市| 临沧市| 明光市| 临泽县| 新乡市| 万州区| 图片| 崇阳县| 建始县| 洛南县| 敖汉旗| 岳西县| 东阳市| 巴彦淖尔市| 杭锦后旗| 商水县| 仲巴县| 柳州市| 威宁| 东港市| 剑川县| 祁连县| 石门县| 二连浩特市| 娄烦县| 惠水县| 平乐县| 敖汉旗| 凌云县| 大港区| 桂阳县| 台北县|