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
  • 737
  • 1
  • 10
  • 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
  • 90,562
  • 7
  • 108
  • 148