Valor de retorno da função de cache em javascript

Às vezes, você precisa fazer algumas coisas pesadas em uma função e talvez precise executá-la uma vez e depois deseja apenas usar a saída, mas sem criar outra variável.

function foo() { 
var results = 'hello there';

if (foo.cache) {
console
.log('from cache');
results
= foo.cache;
} else {
console
.log('first run');

// long dirty stuff

foo
.cache = results;
}

return results;
}

//calling foo() for the first time
foo
(); // => 'first run' and will return 'hello there'

//calling it for the second time
foo
(); // => 'from cache' and will return 'hello there'

Aproveitar!