Java闭包如何工作

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

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


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

查看所有标签

猜你喜欢:

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

信息学奥林匹克教程·提高篇

信息学奥林匹克教程·提高篇

吴耀斌 / 湖南师范大学出版社 / 2003-1 / 24.00元

《信息学奥林匹克教程》(提高篇)既有各个算法设计基本思路的讲解及对求解问题的分析,注重了算法引导分析与不同算法的比较,又给出了具体的编程思路与参考程序,程序采用信息学竞赛流行的Turbo Pascal7.0语言编写,并注重结构化与可读性。一起来看看 《信息学奥林匹克教程·提高篇》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具