如何从浏览器控制台访问存储在函数闭包中的 javascript 变量
How to access javascript variable stored in function closure from browser console?
假设我有一个全局函数:
function Init()
{
var v = 10;
window.GlobalFunction = function()
{
// Global Function has access to v, because of closure
alert(v);
}
}
Init();
如何从FireBug控制台获取v的值?我可以在那里放置断点并查看值。然而,这对我来说还不够。我想为第三方网站构建 FireFox 插件,所以我需要访问此变量,但无法更改源代码。
如果v
像你说的那样是一个全局变量,那么你应该能够在控制台上键入v
来获取它的值。
如果v
不是全局,则只能从包含它的函数中访问它。JavaScript 是一种函数范围语言,var
关键字表示该变量只能在当前范围内访问。 如果您不想使用断点/调试器,如果无法修改源,并且如果源没有变量的 getter 方法,则可能不走运。
尝试在这里发挥创意,您也许能够基于Init
的原型或包含它的任何对象(例如,使用 new
关键字)创建一个对象,并将 getter 函数添加到您的对象版本中。然后在以前使用原始代码对象的任何位置使用新对象。
如果你的意思是你如何从捕获它的函数外部访问闭包捕获的变量,你不能。控制台不为您提供对状态的任何特殊访问权限,它执行 JavaScript 就像您在当前断点执行eval()
一样(如果您不在断点处,则全局执行)。如果您无法从 JavaScript 访问该变量,则也无法从控制台访问它。
如前所述,仅当v
在范围内时,即当您在断点处停止并且v
在范围内时,才能访问它。
相关文章:
- 使用闭包/函数绑定将自函数作为回调传递
- 了解 JavaScript 闭包函数
- 传递多个参数的闭包函数
- 将“(0)”附加到此闭包函数的目的是什么
- 如何复制(新实例)闭包函数
- Javascript 闭包函数参数
- 具有闭包函数作用域的意外行为
- javascript闭包函数可以由用户更改吗
- Javascript:是这个闭包函数
- 为什么闭包函数中的 javascript 变量在多次调用时不会重置为默认值
- Js闭包:函数在第二次调用时失败
- 如何存储闭包函数返回的变量
- javascript闭包函数的用法
- JavaScript闭包函数传递给事件监听器
- 闭包函数问题
- & # 39;这个# 39;匿名闭包函数内部
- 在JavaScript中实现自动记忆(返回闭包函数)
- 不理解闭包函数是如何工作的
- Javascript闭包函数
- 为javascript闭包函数编写jasmine测试规范