javascript - 是否有可能访问函数的闭包?

标签 javascript scope closures

javascript 中的函数通过保持指向其封闭范围的(隐藏)链接来形成闭包。

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

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

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

//access y here with x somehow

最佳答案

这就是闭包的(其中一个)目的——保持信息的私密性。由于函数已经被执行,它的范围变量不再可以从外部获得(并且从来没有)——只有在它的范围内执行的函数(仍然)可以访问。

但是您可以通过 getters/setters 授予访问权限。

你可能想看看 Stuart Langridge's talk关于关闭。非常值得推荐的还有 Douglas Crockfords Explanations。你可以用闭包做很多花哨的事情;)

编辑: 您有几个选项来检查闭包:在 Web 开发人员控制台中观察对象,或者(就像我经常做的那样)返回一个将所有私有(private)变量转储到控制台的调试函数。

关于javascript - 是否有可能访问函数的闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11192875/

相关文章:

go - 限制变量存储错误的范围

ios - Swift 中 super 简单的尾随闭包语法

python - `del` 语句和自由变量

javascript - 递归查找 JSON 值

javascript - 产生依赖于递归 promise 的 promise

javascript - Chrome 扩展程序和 gmail.js 阻止访问 google api

javascript - 通过lambda函数向SQS发送消息时如何插入

jsp - jsp scriptlet 局部变量的确切范围是什么?

swift - Swift 中全局初始化与 viewDidLoad 初始化之间有区别吗

c# - C# 中的延续