• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 网页制作 > JavaScript >

JavaScript闭包 懂不懂由你反正我是懂了(2)

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-02-06点击:

  一个典型的例子就是全局变量的使用。

  mykhal这样回答:

  Wikipedia对闭包的定义是这样的:

  In computer science, a closure is a function together with a referencing environment for the nonlocal names (free variables) of that function.

  从技术上来讲,在JS中,每个function都是闭包,因为它总是能访问在它外部定义的数据。

  Since scope-defining construction in Javascript is a function, not a code block like in many other languages, what we usually mean by closure in Javascript is a fuction working with nonlocal variables defined in already executed surrounding function.

  闭包经常用于创建含有隐藏数据的函数(但并不总是这样)。

  var db = (function() {

  // 创建一个隐藏的object, 这个object持有一些数据

  // 从外部是不能访问这个object的

  var data = {};

  // 创建一个函数, 这个函数提供一些访问data的数据的方法

  return function(key, val) {

  if (val === undefined) { return data[key] } // get

  else { return data[key] = val } // set

  }

  // 我们可以调用这个匿名方法

  // 返回这个内部函数,它是一个闭包

  })();

  db('x'); // 返回 undefined

  db('x', 1); // 设置data['x']为1

  db('x'); // 返回 1

  // 我们不可能访问data这个object本身

  // 但是我们可以设置它的成员

  看了这么多外国大牛的解答,不知道你懂还是不懂,反正我是懂了。

标签: javascript 闭包 js

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1978130638@qq.com ,  QQ