Java闭包如何工作

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

内容简介:闭包很像一个对象。只要调用一个函数,它就会被实例化。在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/


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

查看所有标签

猜你喜欢:

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

代码的未来

代码的未来

[日] 松本行弘 / 周自恒 / 人民邮电出版社 / 2013-6 / 79.00元

《代码的未来》是Ruby之父松本行弘的又一力作。作者对云计算、大数据时代下的各种编程语言以及相关技术进行了剖析,并对编程语言的未来发展趋势做出预测,内容涉及Go、VoltDB、node.js、CoffeeScript、Dart、MongoDB、摩尔定律、编程语言、多核、NoSQL等当今备受关注的话题。   《代码的未来》面向各层次程序设计人员和编程爱好者,也可供相关技术人员参考。一起来看看 《代码的未来》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具