猿问

这段代码怎么被优化了?

这是我在《高级3》看到的一段代码,不明白这种写法怎么被优化了?
functioncreateXHR(){
if(typeofXMLHttpRequest!='undefined'){
createXHR=function(){
returnnewXMLHttpRequest();
};
}elseif(typeofActiveXObject!='undefined'){
createXHR=function(){
if(typeofarguments.callee.activeXString!='string'){
varversion=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0"],
i,len;
for(i=0,len=version.length;itry{
newActiveXobject[version[i]];
arguments.callee.activeXString=versions[i];
break;
}catch(ex){
//skip
}
}
}
}
}else{
createXHR=function(){
thrownewError("NoXHRobjectavailable.");
}
}
returncreateXHR();
}
createXHR();
慕桂英4014372
浏览 441回答 2
2回答

慕神8447489

这叫lazyassignment本来呢,createXHR要根据不同环境执行不同代码,但由于运行环境的不变性,每执行一次createXHR就判断一次显然太浪费性能了;如果是一开始就根据不同环境给createXHR赋不同的值,在某些情况下也很浪费,因为你不一定会用到它。而这种方法,只在第一次执行时判断环境并给createXHR赋上不同的值,这就完美解决了上面的问题。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答