前端基础

代码优化

2016-12-30  本文已影响73人  他在发呆

优化代码的目的:提高运行速度;

js代码优化:

HTML

CSS

渲染优化

meta标签优化

向数组中插入元素

var arr=[1,2,3,4,5];
arr.push(6);
换成
arr[arr.length]=6;

arr.unshift(0);
改为
[0].concat(arr);

优化嵌套的条件语句

    if (color) {
        if (color === 'black') {
            getBlack();
        } else if (color === 'red') {
            getRed();
        } else if (color === 'blue') {
            getBlue();
        } else if (color === 'green') {
            getGreen();
        } else {
            printYellowBackground();
        }
    }

优化:

    var colorObj = {
        'black': getBlack,
        'red': getRed,
        'blue': getBlue,
        'green': getGreen,
        'yellow': getYellow
    };
    if (color in colorObj) {
        colorObj[color]();
    }


undefined==null;//true;
undefined===null;//fallse;

undefined与null的区别

检查某对象是否有某属性:

 var obj={
    name:'hello'
 }
 if(obj.name){
    console.log('obj has name');
 }

转换

 var obj={
    name:'world'
 }
obj.hasOwnProperty("name")//true
"name" in obj//true

obj.hasOwnProperty('valueOf')//false;继承自原型链(__proto__属性)
"valueOf" in obj//true

区分与检查属性的深度不同,换言之hasOwnProperty只在本身有此属性时返回true,而in操作符不区分属性来自于本身或继承自原型链。

快速测量js代码性能,使用console的timeEnd方法

    console.time("Array initialize");
   var arr = new Array(100),
       len = arr.length,
       i;
   
   for (i = 0; i < len; i++) {
       arr[i] = new Object();
   };
   console.timeEnd("Array initialize");
上一篇下一篇

猜你喜欢

热点阅读