这是我在《高级3》看到的一段代码,不明白这种写法怎么被优化了?
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 version =["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0"],
i,len;
for (i=0,len=version.length;i
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这叫lazy assignment
本来呢,createXHR要根据不同环境执行不同代码,但由于运行环境的不变性,每执行一次createXHR就判断一次显然太浪费性能了;如果是一开始就根据不同环境给createXHR赋不同的值,在某些情况下也很浪费,因为你不一定会用到它。
而这种方法,只在第一次执行时判断环境并给createXHR赋上不同的值,这就完美解决了上面的问题。
惰性载入函数,函数被第一次执行时会被新的函数覆盖,之后执行时就不需要进行浏览器能力检测。
具体是怎么判断的,还是不懂啊