pie*_*636 1 javascript developer-tools iife
让我先说一下,我知道它不是以编程方式从外部访问IIFE的内部变量,除非它们已被全局范围访问.
例如:
(function() {
var a = "Hello"; // a isn't accessible from the outer scope
)();
console.log(a); // a is undefined
Run Code Online (Sandbox Code Playgroud)
但:
(function() {
var a = "Hello";
global.a = a;
)();
console.log(a); // Displays "Hello"
Run Code Online (Sandbox Code Playgroud)
在某些情况下,IIFE可能会持续执行几秒钟,或者在整个页面浏览期间,通常是在用JavaScript编写的游戏中,IIFE将包含游戏循环.
因此,IIFE中声明的所有变量和函数必须存在于浏览器内存中,但由于封装,它们无法从开发人员控制台显示.
我的问题是:有没有什么方法可以显示或操作它们,而不是先前修改代码,而它正在运行?由于这些变量存在于内存中并被使用?也许是通过某种调试?
我的问题主要针对Firefox和Chrome(Firebug和开发人员工具),但如果有一般方法可以使用它.
在IIFE中放置一个断点,在将来运行的一行代码上.
当命中断点时,控制台将在该范围内.
(function() {
document.querySelector("button").addEventListener("click", myFunction);
var a = 1;
function myFunction (ev) {
debugger; // You could also add this breakpoint using the Dev Tools UI
console.log("A is ", a);
}
})();Run Code Online (Sandbox Code Playgroud)
<button>Button</button>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
340 次 |
| 最近记录: |