Java闭包如何工作

栏目: Java · 发布时间: 7年前

内容简介:闭包很像一个对象。只要调用一个函数,它就会被实例化。在JavaScript中闭包的作用域是词法的,这意味着包含在闭包所属函数中的所有内容都可以访问其中的任何变量。在闭包中包含一个变量

闭包很像一个对象。只要调用一个函数,它就会被实例化。

在JavaScript中闭包的作用域是词法的,这意味着包含在闭包所属函数中的所有内容都可以访问其中的任何变量。

在闭包中包含一个变量

  1. 赋值为var foo=1;或
  2. 写var foo;

如果一个内部函数(包含在另一个函数中的函数)访问这样一个变量,而不使用var在它自己的作用域中定义它,那么它会修改外部闭包中变量的内容。

闭包的运行时间比生成它的函数的运行时间长。如果其他函数超出了定义它们的闭包/作用域(例如作为返回值),这些函数将继续引用那个闭包。

示例:

function example(closure) {  
  // define somevariable to live in the closure of example
  var somevariable = 'unchanged';

  return {
    change_to: function(value) {
      somevariable = value;
    },
    log: function(value) {
      console.log('somevariable of closure %s is: %s',
        closure, somevariable);
    }
  }
}

closure_one = example('one');  
closure_two = example('two');

closure_one.log();  
closure_two.log();  
closure_one.change_to('some new value');  
closure_one.log();  
closure_two.log();

输出:

somevariable of closure one is: unchanged  
somevariable of closure two is: unchanged  
somevariable of closure one is: some new value  
somevariable of closure two is: unchanged
转载请注明出处

http://zgljl2012.com/how-do-javascript-closures-work/


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP、MySQL和Apache编程导学

PHP、MySQL和Apache编程导学

梅隆尼 / 李军 / 2009-1 / 59.00元

《PHP、MySQL和Apache编程导学(原书第4版)》介绍Web应用开发的强大组合工具:MySQL、Apache和PHP,共分为六个部分。第一部分引领读者深入了解、安装和配置MySQL、Apache和PHP。第二部分讲解PHP语言基础,包括数组和对象这样的结构化元素。第三部分介绍中级应用程序开发的主题,包括使用表单和文件、限制访问以及完成包含某个专门概念的小项目。第四部分介绍使用数据库的一般性......一起来看看 《PHP、MySQL和Apache编程导学》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具