下面 JavaSript 代码的输出结果是__?

const add = () => {
    const cache = {};

    return num => {
        if (num in cache) {
            return `From cache! ${cache[num]}`;
        } else {
            const result = num + 10;
            cache[num] = result;

            return `Calculated! ${result}`;
        }
    };
};

const addFunction = add();

console.log(addFunction(10));
console.log(addFunction(10));
console.log(addFunction(5 * 2));
1181 次浏览
  • A、Calculated!20 Calculated!20 Calculated!20
  • B、Calculated!20 Fromcache!20 Calculated!20
  • C、Calculated!20 Fromcache!20 Fromcache!20
  • D、Calculated!20 Fromcache!20 Error
add函数是⼀个记忆函数。通过记忆化,我们可以缓存函数的结果,以加快其执⾏速度。上述 情况,我们创建⼀个 cache对象,⽤于存储先前返回过的值。 如果我们使⽤相同的参数多次调⽤ addFunction函数,它⾸先检查缓存中是否已有该值,如果 有,则返回缓存值,这将节省执⾏时间。如果没有,那么它将计算该值,并存储在缓存中。 我们⽤相同的值三次调⽤了 addFunction函数: 在第⼀次调⽤, num等于 10时函数的值尚未缓存,if语句 numincache返回 false,else块的 代码被执⾏:Calculated!20,并且其结果被添加到缓存对象, cache现在看起来像 {10:20}。 第⼆次, cache对象包含 10的返回值。if语句 numincache 返回 true, Fromcache!20被打 印。 第三次,我们将 5*2 (值为10)传递给函数。cache对象包含 10的返回值。if语句 numincache 返回 true, Fromcache!20被打印。
挑战成功
1个月前
挑战成功
1年前
挑战失败
1年前
挑战失败
1年前
挑战成功
1年前
挑战成功
2年前
挑战失败
2年前
挑战成功
2年前
www
挑战成功
2年前
www
挑战失败
2年前

微信公众号

有课学公众号
  • 微信公众号: geekdaxue