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/


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

查看所有标签

猜你喜欢:

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

信息烟尘

信息烟尘

戴维·申克 / 黄锫坚 / 江西教育出版社 / 2002 / 14.50元

今天,我们被大量的信息淹没了:传真、电子邮件、各种新闻、消息和铺天盖地的广告,正如人们以前预示的那样:出现了一个令人鼓舞的信息时代,媒体专家兼网络评论员戴维·申克透过这些繁荣的表象,揭示了大量的无用的信息对我们造成的干扰,或者说,“信息烟尘”对我们个人的健康(包括精神上的和肉体上的)及对社会造成的极大危害。这《信息烟尘:在信息爆炸中求生存》宣告了“信息时代”神话的破灭。一起来看看 《信息烟尘》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试