国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript中的isXX系列是否繼續使用的分析

2019-11-20 23:50:57
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

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

綜上,我去掉了類庫中對基本類型判斷的isNull/isUndefined/isBoolean/isNumber/isString,需要用到這些判斷的時候直接使用typeof運算符等。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鸡泽县| 云梦县| 西华县| 梅州市| 班玛县| 尉氏县| 麻栗坡县| 临江市| 剑阁县| 称多县| 武威市| 安国市| 霍林郭勒市| 德庆县| 旺苍县| 固阳县| 哈密市| 绍兴市| 武威市| 军事| 随州市| 根河市| 柏乡县| 武城县| 沙坪坝区| 武安市| 滦南县| 阿拉善盟| 柘荣县| 象山县| 太原市| 洛南县| 六枝特区| 合川市| 互助| 河南省| 内丘县| 房山区| 炉霍县| 新余市| 宿松县|