为什么要惰性函数呢?减少if分支,加快代码执行。惰性载入表示函数执行的分支仅会发生一次。有两种实现惰性载入的方式,一是在函数被调用时再处理函数。另一种是声明函数时就指定适当的函数。

第一种:

function createXHR(){    if(typeof XMLHttpRequest != "undefined"){        createXHR = function(){            return new XMLHttpRequest();        };    }else if(typeof ActiveXObject != "undefined"){        createXHR = function(){            if(typeof arguments.callee.activeXString != "string"){                var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp"],                    i, len;                for(i=0,len=versions.length; i

第二种:

var createXHR = (function(){    if(typeof XMLHttpRequest != "undefined"){        return function(){            return new XMLHttpRequest();        }    }else if(typeof ActiveXObject != "undefined"){        return function(){            ``````        }    }else{        return function(){            throw new Error("NO XHR object available.");        }    }})();