Javascript 从开发人员工具访问IIFE变量

Javascript 从开发人员工具访问IIFE变量,javascript,developer-tools,iife,Javascript,Developer Tools,Iife,让我先说一句,我知道它不能从外部以编程方式访问IIFE的内部变量,除非它们已被全局范围访问 例如: (function() { var a = "Hello"; // a isn't accessible from the outer scope )(); console.log(a); // a is undefined 但是: 在某些情况下,IIFE可能会持续执行几秒钟,或者在页面浏览的整个过程中,通常是在使用JavaScript编写的游戏中,IIFE将包含游戏循环 因此,IIF

让我先说一句,我知道它不能从外部以编程方式访问IIFE的内部变量,除非它们已被全局范围访问

例如:

(function() {
    var a = "Hello"; // a isn't accessible from the outer scope
)();

console.log(a); // a is undefined
但是:

在某些情况下,IIFE可能会持续执行几秒钟,或者在页面浏览的整个过程中,通常是在使用JavaScript编写的游戏中,IIFE将包含游戏循环

因此,IIFE中声明的所有变量和函数都必须存在于浏览器内存中,但由于封装,它们无法从开发人员控制台显示

我的问题是:在代码运行时,有没有任何方法可以在不修改代码的情况下显示或操作这些代码?因为这些变量存在于内存中并且正在使用?也许通过某种调试

我的问题主要是针对Firefox和Chrome(Firebug和开发者工具),但如果有一种通用的方法也能做到这一点。

在IIFE内部,在未来将运行的一行代码上

当遇到断点时,控制台将在该范围内

(函数(){
document.querySelector(“按钮”).addEventListener(“单击”,myFunction);
var a=1;
功能myFunction(ev){
调试器;//还可以使用开发工具UI添加此断点
console.log(“A is”,A);
}
})();

按钮
这是否允许我编辑变量(并让代码的其余部分使用编辑的值)?是。(由于评论的长度是最小的,我花了10秒钟的时间在答案中的演示中进行检查)。谢谢,简单又有效。(我试着用那个演示进行检查,但没有找到代码)
(function() {
    var a = "Hello";
    global.a = a;
)();

console.log(a); // Displays "Hello"