Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 哪一部分是结束?_Javascript_Closures - Fatal编程技术网

Javascript 哪一部分是结束?

Javascript 哪一部分是结束?,javascript,closures,Javascript,Closures,我将以javascript为例。我感到困惑,因为我已经看到了关于“是”结束部分的各种答案。是不是要关门了?结束了吗?结束了吗?我不想在求职面试时指出错误的代码部分,然后看起来像个装腔作势的人 var counterFunc = function() { var count = 0; var incCount = function() { count = count + 1; return count; }; return incCount; }; var

我将以javascript为例。我感到困惑,因为我已经看到了关于“是”结束部分的各种答案。是不是要关门了?结束了吗?结束了吗?我不想在求职面试时指出错误的代码部分,然后看起来像个装腔作势的人

var counterFunc = function()
{
  var count = 0;

  var incCount = function()
  {
    count = count + 1;
    return count;
  };

  return incCount;
};

var myCounter = counterFunc();
console.log(myCounter());
console.log(myCounter());

“闭包”不仅是内部函数的主体,而且是该函数与该函数需要保留对其引用的外部作用域变量的访问权限的任何(内部)状态的组合。

请参见,isCount/
myCounter
就是闭包
counterFunc
提供了闭包范围,
count
是一个闭包变量(它是“closed over”)@Bergi,它与Wikipedia页面不一致,在这种情况下,对
count
变量实例的引用也是闭包的一部分始终是函数对象的一个属性,我认为这一区别并不重要necessary@Bergi我想知道,
[[scope]]
是否只包含外部作用域中显式引用的变量,或者
eval
是否也可以访问封闭作用域中的每个变量。无论如何,我已经澄清了,闭包并不是真正的函数体。嗯,一个测试表明它是整个作用域。语言规范只说它引用了整个作用域。然而,js实现可以垃圾收集任何不再被引用的变量(当然不是在
eval
的情况下)@snockedpancakes这非常接近,但它不仅限于外部函数-该函数本身可能包含在其他函数中,还有全局范围。