看《js的设计模式与开发实践》一书,由于自己小白,有一段代码实在是没看懂,求大神解答!代码的功能是想实现数组的连乘,然后对于相同的参数来说,每次都进行计算比较浪费,于是提出了以下代码:var cache = {};var mult = function() { var args = Array.prototype.join.call(arguments, ','); if (cache[args]) { return cache[args]; } var a = 1; for (var i = 0, l = arguments.length;i < l;i++) { a = a * arguments[i]; } return cache[args] = a;};alert(mult(1,2,3)); //输出6主要不懂的地方就是cache是个对象,然后cache[args]是什么意思呢?以及return cache[args] = a;这句也不是很懂。
3 回答
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
if (cache[args]) {
return cache[args];
}
判断cache对象里面是否已经有缓存,如果有,直接返回,不经过后续无用计算
return cache[args] = a;
将本次计算结果缓存起来,方便后续遇到同样的计算请求可以直接返回结果
忽然笑
TA贡献1806条经验 获得超5个赞
函数mult
每次执行的参数和输出作为cache
对象的key和value,cache[args]
是取出缓存的数据;return cache[args] = a
相当于cache[args] = a; return a;
添加回答
举报
0/150
提交
取消