为什么要惰性函数呢?减少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."); } }})();