首先我们得明白为什么要使用惰性函数?惰性函数就是第一次计算得到的值,供内部函数调用,然后用这个内部函数重置外部函数(因为同名),以后就不用计算了,也不用判断分支条件。这时函数就相当于一个被赋值的变量!
我们首先来看一个简单的实例:
[cc lang=”javascript”]var t;
function getTime(){
if(t) return t;
t = new Date();
return t
}[/cc]
这样的一个函数,只是为了获取当前时间,但是我们每次一运行这个函数,就要进行一次判断,为了解决每次都要进行一次判断,我们就可以使用惰性函数了,看接下来的函数:
[cc lang=”javascript”]var getTime = function(){
var t = new Date();
getTime = function(){
return t
}
return getTime()
}[/cc]
以上例子中,我们使用了闭包,并且将内部函数与外部函数都设置为同名,这样就可以使函数运行第一次的时候执行完成得到的结果就可以直接保存下来,下一次我们再执行这个函数的时候,就不用再去判断了。看另一个实例:
[cc lang=”javascript”]function createXHR() {
var xhr;
if (typeof XMLHttpRequest != ‘undefined’) {
xhr = new XMLHttpRequest();
createXHR = function() {
return new XMLHttpRequest();
}
} else {
try {
xhr = new ActiveXObject(“Msxml2.XMLHTTP”);
createXHR = function() {
return new ActiveXObject(“Msxml2.XMLHTTP”);
}
} catch (e) {
try {
xhr = new ActiveXObject(“Microsoft.XMLHTTP”);
createXHR = function() {
return new ActiveXObject(“Microsoft.XMLHTTP”);
}
} catch (e) {
createXHR = function() {
return null;
}
}
}
}
return xhr
}[/cc]