javascript中的闭包使用例子与解释
2014-04-10 13:09
399 查看
闭包的定义:
闭包是个函数,而它「记住了周围发生了什么」。表现为由「一个函数」体中定义了「另个函数」。
我们知道,js中函数可以当作参数传递,自然也是可以被return返回的,如果一个函数内部定义的函数,使用了外部函数定义的局部变量,那么当
外部函数返回时,其定义的局部变量空间不会释放,这跟C++是不一样的。
function outer () { var a=8; function inner () { var b=9; } }
在这里inner函数可以访问outer函数定义的a变量,但是反过来不可以。还要注意的一点是,如果是想定义函数内部的局部变量,必须用var声明,否则声明的是个全局变量。
**********************************************************************************************************************************
例1function newClosure(someNum,someRef){var num=someNum;var anyArray=[1,2,3];var ref=someRef;//console.log(‘hello world’);return function(x){num+=x;anyArray.push(num);console.log('num:'+num+'\nanArray:'+anyArray.toString()+'\nref.someVar:'+ref.someVar);}}var closure1=newClosure(40,{someVar:'closure 1'});//如果不注释掉console.log(‘hello world’)将会输出hello world.var closure2=newClosure(1000,{someVar:'closuere 2'});closure1(5);closure2(-10);当闭包函数需要传参数时,需要调用外部函数,返回给一个变量,这个变量就变成一个函数,然后执行这个函数。***********************************************************************************************************************************例2function sayAlice() { var sayAlert = function() { console.log(alice); } var alice = 'Hello Alice'; return sayAlert;}var helloAlice=sayAlice();helloAlice();这个例子说明,闭包函数定义在外围函数的局部变量前,也能使用局部变量。***************************************************************************************************************例子3(我想让一个数组里的每个元素是个函数,然后执行的,但是不知道为啥)function buildList(list) {//传入个类似数组之类的线性表var result=[];for (var i = 0; i < list.length; i++) {result.push(function(){ //将一个函数放入到一个数组中console.log(list[i]);});};return result;//返回这个数组,每一个元素都是一个函数,好神奇的JS}function testList() {var fnlist = buildList([1,2,3]);// using j only to help prevent confusion - could use ifor (var j = 0; j < fnlist.length; j++) {fnlist[j]();//无法运行,哪个大侠说说原因?}}
相关文章推荐
- JavaScript中闭包的使用例子
- JavaScript setTimeout使用闭包功能实现定时打印数值
- javascript中闭包的使用
- 5个可以帮你理解JavaScript核心闭包和作用域的小例子
- Javascript的setTimeout()使用闭包特性时需要注意的问题
- 分享JavaScript与Java中MD5使用两个例子
- AJAX:success,error,complete,beforeSend使用例子及解释
- javascript执行上下文、作用域与闭包(第五篇)---一个例子的理解
- 每天一个JavaScript实例-使用带有定时器的函数闭包
- JQuery_JavaScript___call、apply、arguments的使用解释
- php闭包使用例子
- ADF 页面使用 JavaScript 例子
- 在HTML代码中使用JavaScript代码的例子
- JavaScript 闭包的使用
- 在HTML代码中使用JavaScript代码的例子
- 关于使用javascript设置,读取,判断表单的小例子
- JavaScript自执行闭包的小例子
- 5个可以帮你理解JavaScript核心闭包和作用域的小例子
- JavaScript中使用stopPropagation函数停止事件传播例子
- javascript作用域和闭包使用详解