所以…我正在努力学习这个叫做封闭的新东西……对我而言……
出于学术兴趣:
描述
当我在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.