在firebug中的Javascript闭包

所以…我正在努力学习这个叫做封闭的新东西……对我而言……

出于学术兴趣:

描述

当我在JS中创建全局变量或函数时 – 我可以在firebug的DOM选项卡中看到它们(它们附加到Window对象).
当我创建对象 – 同样的故事.我可以在Firebug DOM的选项卡中看到对象.

题:

闭包内部的变量和函数如何 – 它们附加到哪里?
我没有在Firebug的DOM选项卡中看到这些闭包私有变量.这是应该的方式吗?

(function () {
    var test1 = 'test'; //do't se it in DOM
    function test2(){  //do't see it in DOM
    }
}());

最佳答案 DOM选项卡仅显示全局定义的变量和函数.它从不显示任何局部变量或函数.

闭包意味着只要函数本身保留在内存中,本地函数使用的局部变量将保留在内存中,而不是立即被销毁.由于它都是本地的,因此它们不会显示在DOM选项卡的全局变量列表中.

考虑以下:

  var increment = (function(){
    var i = 0;
    return function() { 
      return i++;
    }
  })();

  increment(); // should return 0
  increment(); // should return 1

你仍然可以看到i的值,但它只能从闭包中获得,所以你需要在返回i上放置一个断点;在“脚本”选项卡的“局部变量”部分中查找并查找i.

点赞