将计算结果缓存起来,这样就不需要每次都计算了。
var cache = {}
function square(n) {
if (!cache[n]) {
cache[n] = n * n;
}
return cache[n];
}
以上代码虽然可以实现功能,但是最大的问题就是缓存需要定义一个全局变量。其实这个变量是可以使用闭包隐藏的。
var square = (function () {
var cache = {};
return function(n) {
if (!cache[n]) {
cache[n] = n * n;
}
return cache[n];
}
})();