JavaScript自记忆函数,函数能够记住上次计算发结果
function isPrime(value) {
//创建函数属性
if (!isPrime.answers) {
isPrime.answers = {};
}
//检查缓存的值
if (isPrime.answers[value] !== undefined) {
return isPrime.answers[value];
}
var prime = value !== 1;
for (var i = 2; i < value; i++) {
if (value % i === 0) {
prime = false;
break;
}
}
//存储计算的值
return isPrime.answers[value] = prime;
}
在函数执行的时候,首先会检查answer属性是否定义,只要函数执行后就会初始化一个空对象用来存储先前只算得到的值。
由于函数调用的时候会寻找之前多的到的值,所以我们会受到很好的性能收益;有利必有弊,性能的提升是我们牺牲内存获得的。