0

Wanted to write a short closure using lambdas:

let fetch = () => {
    let page = 0;
    return () => {
        page++;
        console.log(page);
    };
}();

But ended up getting:

file.js:7:1 SyntaxError: missing ; before statement:
file.js:7:1 }();
file.js:7:1 .^

Can someone please explain why? As writing it like this is fine:

let fetch = function() {
    let page = 0;
    return () => {
        page++;
        console.log(page);
    };
}();
MustSeeMelons
  • 681
  • 1
  • 11
  • 24

1 Answers1

1

You need to include parenthesis around the first function before you invoke it:

let fetch = (() => {
  let page = 0;
  return () => {
      page++;
      console.log(page);
  };
})();

fetch()
fetch()
Mark
  • 84,957
  • 6
  • 91
  • 136