re: Memoization in a Nutshell VIEW POST

FULL DISCUSSION
 

One fix needed:

if (n == 0 || n == 1) n;

needs to be

if (n === 0 || n === 1) return n;

(also uses === as best practice)

Otherwise an error happens:

RangeError: Maximum call stack size exceeded
 

And for the brain version:

if (brain[n] === undefined) {

Or undefined will be the only result.

 

Oh, shoot! Thank you. I thought that could implicitly return.

About the === it's very funny because now we don't have to use == again, although it is totally fine for integers like this case.

 

===: Yeah, I just picked up this habit, as it is usually the safer option, especially when processing external/user input.

return: JS is one of the langs without implicit returns. Nevertheless in the middle of a function we need to be explicit anyway, since more code follows afterwards. If implicit returns were supported you could use an else block to avoid a keyword, but also not worth the effort.

Yeah I was hoping es6 is closer to functional than this. The only way to get an implicit return from the last expression is a lambda function without brackets (containing a single expression).

let fun = () => 0;
fun()           // will return 0
code of conduct - report abuse