猿问

js的一段代码没懂什么意思

看《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;这句也不是很懂。


白猪掌柜的
浏览 517回答 3
3回答

慕盖茨4494581

if (cache[args]) {&nbsp; &nbsp; return cache[args];}判断cache对象里面是否已经有缓存,如果有,直接返回,不经过后续无用计算&nbsp;return cache[args] = a;&nbsp;&nbsp;将本次计算结果缓存起来,方便后续遇到同样的计算请求可以直接返回结果

忽然笑

函数mult每次执行的参数和输出作为cache对象的key和value,cache[args]是取出缓存的数据;return cache[args] = a相当于cache[args] = a; return a;
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答