天行健, 君子以自强不息
Sunny's Blog
Title

js编程中需要注意到的问题(持续更新2016/03/28)

1.避免双重求值

js中可以动态执行包含代码的字符串的语句,有4种方法

1)eval()---禁用,如果是解析字符串用的话要用JSON.parse()来代替//eval('s1+s2');

2)Function()// sum=new Function('s1','s2', 'retun s1+s2');

setTimeout和setInterval,第一个参数不要直接写字符串,写函数名

原因在于每次调用这些语句去解析其中的字符串的时候,浏览器都要重新创建一个新的解析器/编译器实例,这使得代码执行的速度变慢

2.使用Object/Array直接量定义,快

3.避免重复工作

这里我学会了两个概念叫:函数延迟加载和条件预加载

                    //函数延迟加载
                    function addHandler(target, eventType, handler){
                        //复写现有函数---这招要学会
                        if( target.addEventListener ){
                            addHandler = function(target, eventType, handler){
                                target.addEventListener(target, eventType, handler);
                            };
                        }else{
                            addHandler = function(target, eventType, handler){
                                target.attachEvent("on"+eventType, handler);
                            };                           
                        }
                        //调用一次
                        addHandler(target, eventType, handler);
                    }
                    //在函数定义的时候判断一下,然后就覆写函数了,之后调用不再进行判断
                
                    //条件预加载
                    var addHandler = document.body.addEventListener?
                                     function(target, eventType, handler){
                                        target.addEventListener(target, eventType, handler);
                                     }:
                                     function(target, eventType, handler){
                                        target.attachEvent(target, eventType, handler);
                                     };
                    //在脚本加载的时候就检测
                

4.使用速度快的部分

位运算判断奇数偶数---(i & 1)

5.多使用原声方法

比如,Math系列,比如querySelector()就比jquery选择器快的

地势坤,君子以厚德载物