该函数是否为闭包,为什么?

时间:2019-05-23 06:16:37

标签: javascript closures

函数计数器可以关闭吗?

let count = 0;

function counter() {
  return count +=1;
}

console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3

2 个答案:

答案 0 :(得分:3)

  

功能计数器可以是闭包

闭包不仅在嵌套函数中。全局范围内的功能声明也是一个闭包。根据{{​​3}}

  

闭包是函数和声明该函数的词法环境的组合

答案 1 :(得分:1)

  

闭包是函数及其引用的组合   周围状态(词汇环境)结合在一起。

每次创建函数时,都会在函数创建时创建一个闭包

let count = 0;

function counter() {
  return count +=1;
}

console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3

函数计数器未定义任何变量count仍可访问该计数,因为 count已在创建 closures 的范围内进行了定义。此外, closures 不仅可以读取,而且可以操纵其{{ 1}},具体来说,lexical environment完全不是闭包,

  

功能计数器+其词法环境为闭包