一尘不染

是否可以访问函数的关闭?

javascript

javascript中的函数通过保持与其隐藏范围的(隐藏)链接来形成关闭。

当我们拥有函数(作为变量值)时,是否可以通过编程方式访问它?

真正的目标是理论上的,但一个演示可能是列出闭合的属性。

var x = (function(){
   var y = 5;
   return function() {
       alert(y);
   };
})();

//access y here with x somehow

阅读 281

收藏
2020-05-01

共1个答案

一尘不染

这是关闭的目的之一(使信息保密)。由于该函数已经执行,因此它的作用域变量不再可从外部获得(并且从未使用过)-只有在其作用域中执行的函数(仍然)可以访问。

但是,您可以通过getter / setter授予访问权限。

编辑:您可以使用几种方法来检查闭包:在webdeveloper控制台中观察对象,或者(就像我经常做的那样)返回调试函数,该函数将所有私有变量转储到控制台。

2020-05-01