用lambdas编写javascript闭包

时间:2018-09-24 16:18:48

标签: javascript closures

想用lambdas写一个简短的闭包:

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

但最终得到了:

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

有人可以解释为什么吗?像这样写就可以了:

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

1 个答案:

答案 0 :(得分:1)

在调用第一个函数之前,您需要在其周围加上括号:

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

fetch()
fetch()