js权威指南中的记忆函数
function memorize(f){
var cache = {};
return function(){
//为什么key要这样赋值,如果arguments.length + arguments.join(",")这样写会报错
var key = arguments.length + Array.prototype.join(arguments, ",");
if(key in cache) return cache[key];
//apply()第二个参数是数组,arguments在这可以当作数组传递参数,那为什么在上面不能使用arguments.join(",")
else return cache[key] = f.apply(this, arguments);
}
}
function gcd(a, b){
return a + b;
}
var gcdmemo = memorize(gcd);
gcdmemo(1, 2);
arguments不是数组,是类数组对象,如果一定要使用array方法,可以考虑通过下面的方法调用