45个JavaScript编程注意事项、技巧大全(4)


  var sum = 0; 
for (var i = 0, len = arrayNumbers.length; i < len; i++) { 
    sum += arrayNumbers[i]; 
}


另外一个好处是,i和len两个变量是在for循环的第一个声明中,二者只会初始化一次,这要比下面这种写法快:

复制代码 代码如下:


  for (var i = 0; i < arrayNumbers.length; i++)


35、传给setInterval()和setTimeout()时使用函数而不是字符串
如果传给setTimeout()和setInterval()一个字符串,他们将会用类似于eval方式进行转换,这肯定会要慢些,因此不要使用:

复制代码 代码如下:


setInterval('doSomethingPeriodically()', 1000); 
setTimeout('doSomethingAfterFiveSeconds()', 5000);


而是用:

复制代码 代码如下:


setInterval(doSomethingPeriodically, 1000); 
setTimeout(doSomethingAfterFiveSeconds, 5000);

36、使用switch/case代替一大叠的if/else

当判断有超过两个分支的时候使用switch/case要更快一些,而且也更优雅,更利于代码的组织,当然,如果有超过10个分支,就不要使用switch/case了。

37、在switch/case中使用数字区间

其实,switch/case中的case条件,还可以这样写:

复制代码 代码如下:


  function getCategory(age) { 
    var category = ""; 
    switch (true) { 
        case isNaN(age): 
            category = "not an age"; 
            break; 
        case (age >= 50): 
            category = "Old"; 
            break; 
        case (age <= 20): 
            category = "Baby"; 
            break; 
        default: 
            category = "Young"; 
            break; 
    }; 
    return category; 

getCategory(5);  // 将返回 "Baby"


38、使用对象作为对象的原型

下面这样,便可以给定对象作为参数,来创建以此为原型的新对象:

复制代码 代码如下:


  function clone(object) { 
    function OneShotConstructor(){};
    OneShotConstructor.prototype = object; 
    return new OneShotConstructor();
}
clone(Array).prototype ;  // []


39、HTML字段转换函数

复制代码 代码如下:


  function escapeHTML(text) { 
    var replacements= {"<": "<", ">": ">","&": "&", "\"": """};                     
    return text.replace(/[<>&"]/g, function(character) { 
        return replacements[character]; 
    });
}


40、不要在循环内部使用try-catch-finally

try-catch-finally中catch部分在执行时会将异常赋给一个变量,这个变量会被构建成一个运行时作用域内的新的变量。

切忌:

复制代码 代码如下:


  var object = ['foo', 'bar'], i; 
for (i = 0, len = object.length; i <len; i++) { 
    try { 
        // do something that throws an exception
    } 
    catch (e) {  
        // handle exception 
    }
}


而应该:

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgfxwj.html