这个JavaScript函数如何缓存其结果?

par*_*ton 4 javascript hash caching memoization

在多次阅读之后,我仍然不明白Stoyan Stefanov的"JavaScript Patterns"第76页的示例代码如何工作.我还不是忍者.但对我来说,它看起来只是存储一个空对象:

var myFunc = function (param) {
  if (!myFunc.cache[param]) {
    var result = {};
    // ... expensive operation ...
    myFunc.cache[param] = result;
  } 
  return myFunc.cache[param];
};
// cache storage
myFunc.cache = {};
Run Code Online (Sandbox Code Playgroud)

除非那个看不见的"昂贵的操作"存储回来result,否则我看不到任何保留.

结果存储在哪里?

PS:我已经阅读了从John Resig的Learning Advanced JavaScript中获取函数的返回结果,这是一个类似的练习,我得到了那个.但这里的代码不同.

Cam*_*ron 5

你已经回答了自己的问题 - 作者认为昂贵的操作会将结果存储起来result.

否则缓存将只包含空对象,如您所述.