先列個通過if判斷執行的**塊:
creatxhr()
function createxhr() else if (typeof activexobject != "undefined") catch (ex)}}
return new activexobject(arguments.callee.activexstring);
} else
}
這樣通過大量if語句將執行引導到正確**中,但如果瀏覽器支援內建xhr,它就是一直支援的,這種測試就變的沒有必要。
即使只有乙個if語句的**也肯定比沒有if語句的慢,所以如果if語句不必每次執行,**可以執行的更快一些。
可以通過惰性載入來解決:惰性載入表示函式執行的分支僅會發生一次。
有兩種實現惰性載入的方式:
1.在函式被呼叫時再處理函式
在第一次呼叫的過程中該函式會被覆蓋為另外乙個按合適方式執行的函式,這樣任何對原函式的呼叫都不必再經過執行的分支了:
// 使用惰性載入重寫
function createxhr();
} else if (typeof activexobject != "undefined") catch (ex)}}
};return new activexobject(arguments.callee.activexstring);
} else ;
} return createxhr(); // 再呼叫一下新賦的函式
}
2.在宣告函式時就指定適當的函式
這樣做在第一次呼叫函式時就不會損失效能了,但在**首次載入時會損失一點效能:
// 建立乙個匿名、自執行函式來確定應該使用哪乙個函式實現。
var createxhr = (function();
} else if (typeof activexobject != "undefined") catch (ex)}}
};return new activexobject(arguments.callee.activexstring);
} else ;
}})();
惰性載入函式優點:只在執行分支**時犧牲一點兒效能,避免重複執行不必要**。 ja惰性函式
使用惰性函式可以取代定義全域性變數 理解若有誤,請指教 html html 一.全域性變數方式 jsvar full null function getfull str if full null full str return full function qjbl var food getfull ...
惰性載入函式
惰性載入函式有兩種方式 在函式呼叫時再處理 function createxhr else if activexobject else return createxhr 宣告函式時就指定適當的函式 var createxhr1 function else if activexobject else ...
js 惰性函式
利用閉包思想 原來定義乙個函式來根據情況執行 元素.addeventlistener 元素.attachevent function emit element,type,func else if element.attachevent else emit box,click func emit bo...