www.zhnq.net > 新手求解 jAvAsCript闭包问题

新手求解 jAvAsCript闭包问题

function a(){ function b(){ }}1、闭包可以模块化,变量隔离2、可以保持变量状态

所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数)通俗来讲就是,如果一个a函数里包含了一个b函数,而b函数被别人引用,那就形成了一个闭包

函数可以调用函数之外定义的数据;函数之外的数据不能调用函数里面的数据!!

只要包含在方法中的都能算闭包,能调用外部的变量或者函数.不要太去强调闭包,不然你会晕的

所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.举个例子:function a(){ var i=0; function b(){ alert(++i); } return b;}var c=a();c();a就是这个函数,一个拥有i变量和绑定了i变量的函数.

var a=40;function test(){ // 这里你在 test 方法里面定义了 var a;则出现在 test(){ 里面的a 都是 在 test 中定义的 a } var a=10; a=89;}test();// 而你这里的 alert (a) ,由于是在最外层的,所以就是第一个 var a;alert(a);--- 通俗一点var a="张

function bibao(s){alert(s);}var test = bibao('hello world.');test();//这就是闭包

其实闭包根本就不难,几分钟你就能理解了,几行代码而已,写了个例子你看下function t1(){var age=10; //声明局部变量function t2(){return ++age ;}return t2; //返回t2函数的本身,而不是结果}var a = t1();// 这一步很关键,执行t1函数的结果

看个人理解,多写些例子就明白了.<br>一个标准的闭包结构应该是这样:<br>var y = 9;<br>function a(){<br> var x = 0; <br> var y = 1;<br> function b(){<br> alert(y)<br> }<br><br>return b;<br>}<br>a()();<br>alert(y);<br><br>函数b在a中是属于闭包

上面不是闭包,for循环结束时i被加了4次,所以结果i是4,当点击时调用函数,取了i的值,也就是拿到了4.下面用了一个即使调用函数(function(){})()来返回另外一个函数,构成闭包,n被保存起来,值为当时i的值.当点击时调用函数t2,t

网站地图

All rights reserved Powered by www.zhnq.net

copyright ©right 2010-2021。
www.zhnq.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com