1.问题
返回首次函数返回的值
var timeStamp = null;
function getTimeStamp () {
if(timeStamp) {
return false;
}
timeStamp = new Date();
return timeStamp;
}
console.log(getTimeStamp());
console.log(getTimeStamp());
console.log(getTimeStamp());
问题: 变量全局污染 if条件每次执行都会被判断
解决1:
var timeTemp = (function () {
var time = new Date();
console.log(1);
return function() {
return time;
}
}) ();
console.log(timeTemp());
console.log(timeTemp());
console.log(timeTemp());
问题: 变量被重新赋值
解决2: 惰性函数
var getTime = function () {
var time = new Date();
console.log(1);
getTime = function() {
console.log(2);
return time;
}
return time;
}
console.log(getTime());
console.log(getTime());
console.log(getTime());
console.log(getTime());
解决三: 惰性函数优化
var getTime = function () {
var time = new Date();
console.log(1);
getTime = function() {
console.log(2);
return time;
}
return getTime(); // 重写后 执行
}
console.log(getTime());
console.log(getTime());
console.log(getTime());
console.log(getTime());
// 应用场景