Javascript优化相关

(1)如果for循环的数据量很大,可以考虑采用duff装置,将for循环拆成switch case,里面一般是8个case,这样会提速

(2)能使用switch就别使用if else,将switch中case按最可能到最不可能一次排序会进一步提升性能

(3)尽量使用原生js方法,如Math中的各种数学计算方法,原生方式是c++之类的编译语言所写,会快很多

(4)多个变量声明提速:只用一个var

慢:

var count = 1;var   count = 1,

var bTrue = false;bTrue = false,

var str = "foo"str = "foo";


(5)for循环中的一个优化,应当避免多次计算长度属性

 var divs = document.getElementsByClassName("div1"); 

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

}


应该优化为:

var divs = document.getElementsByClassName("div1"); 

 for(var i=0,len = divs.length;i<len;i++){

}


(6)代码最好压缩后保存,上线的时候,因为可以减少文件大小和提升下载速度,压缩可以省去全部注释和空白字符以及缩短变量名,


(7)如果页面上有耗时的操作,可以考虑使用web worker将计算放到后台去,这样做不会阻塞页面,因为js是单线程,而web worker在后台

创建线程并执行计算,这样虽然要等待一段时间,但是页面不会卡住,用户可以做其他操作


//单线程
//页面卡住,当数字为10亿数量级以上
function caculate(){
    var num = document.getElementById("numberBtn").value,sum=0;
    for(var i=1;i<=num;i++){
        sum+=i;
    }
    alert(sum);
}

//利用webworker后台执行,在这个js中处理计算
var worker = new Worker("webWorker.js");
function caculateByWebWorker(){
    var number = document.getElementById("numberInput").value;
    var btn = document.getElementById("btn");
    btn.setAttribute("disabled","disabled");
    worker.postMessage(number);

}
//处理后台发来的数据
worker.onmessage = function(e){
    alert(e.data);
    var btn = document.getElementById("btn");
    btn.removeAttribute("disabled");
}


(8)平稳退化的例子:对于那些禁用了js的用户而言,需要对网页做出特殊处理以便能够正常访问,例如<a href="http://www.baidu.com" οnclick="popUp();return false">

这里href属性加上去是为了当js禁用时仍然能够访问链接 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值