前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript 闭包

javascript 闭包

作者头像
达达前端
发布2019-07-15 11:04:50
4130
发布2019-07-15 11:04:50
举报
文章被收录于专栏:达达前端达达前端达达前端

如果没有实战经验,你很难从定义去理解它

最简单最原始的闭包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)的运行机制


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档