选择题1532/1603输出什么?

1const add = () => { 2 const cache = {}; 3 return num => { 4 if (num in cache) { 5 return `From cache! ${cache[num]}`; 6 } else { 7 const result = num + 10; 8 cache[num] = result; 9 return `Calculated! ${result}`; 10 } 11 }; 12}; 13 14const addFunction = add(); 15console.log(addFunction(10)); 16console.log(addFunction(10)); 17console.log(addFunction(5 * 2));
难度:
2021-07-02 创建

本题为"单选题"

参考答案:

正确选项:C:Calculated! 20 From cache! 20 From cache! 20

add函数是一个记忆函数。 通过记忆化,我们可以缓存函数的结果,以加快其执行速度。上述情况,我们创建一个cache对象,用于存储先前返回过的值。

如果我们使用相同的参数多次调用addFunction函数,它首先检查缓存中是否已有该值,如果有,则返回缓存值,这将节省执行时间。如果没有,那么它将计算该值,并存储在缓存中。

我们用相同的值三次调用了addFunction函数:

  • 在第一次调用,num等于10时函数的值尚未缓存,if语句num in cache返回false,else块的代码被执行:Calculated! 20,并且其结果被添加到缓存对象,cache现在看起来像{10:20}
  • 第二次,cache对象包含10的返回值。 if语句 num in cache 返回trueFrom cache! 20被打印。
  • 第三次,我们将5 * 2(值为10)传递给函数。 cache对象包含10的返回值。 if语句 num in cache 返回trueFrom cache! 20被打印。

最近更新时间:2022-10-30

赞赏支持

题库维护不易,您的支持就是我们最大的动力!