如果没有实战经验,你很难从定义去理解它
最简单最原始的闭包demo
javascript 代码
function A() {
function B() {
console.log("Hello");
}
return B;
}
var c = A();
c(); // Hello
在A中返回B的引用 如果一个对象不再被引用,那么这个对象就会被GC回收,否则这个对象一直会保存在内存中。
function A() {
var count = 0;
function B() {
count ++;
console.log(count);
}
return B;
}
var c = A();
c(); // 1
c(); // 2
A中的count一直保存在内存中
一个简单的demo组件:
(function(document) {
var viewport;
var obj = {
init: function(id) {
viewport = document.querySelector("#" + id);
},
addChild: function(child) {
viewport.appendChild(child);
},
removeChild: function(child) {
viewprot.removeChild(child);
}
}
window.jView = obj;
})(document);
var f = function(document) {
var viewport;
var obj = {
init: function(id) {
viewport = document.querySelector("#"+id);
},
addChild: function(child) {
viewport.appendChild(child);
},
removeChild: function(child) {
viewport.removeChild(child);
}
}
window.jView = obj;
};
f(document);
JS的执行环境(execution context)、活动对象(activation object)以及作用域(scope)和作用域链(scope chain)的运行机制
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有