自知其无知
不懂,慢慢懂。
posts - 2,comments - 2,trackbacks - 0

所谓闭包,是指词法表示包括不必计算的变量的函数,也就是说,该函数能使用函数外定义的变量。
在 ECMAScript 中使用全局变量十一哥简单的闭包实例。考虑下面的代码:


<script>
  
var sMessage = "Hello world";
  
  
function sayHelloWorld(){
     alert(sMessage);
  }


  sayHelloWorld();
</script>

在这段代码中,脚本被载入内存后,并未为函数 sayHelloWorld() 计算变量 sMessage 的值。该函数捕获 sMessage 的值只是为以后使用,也就是说,解释程序知道在调用该函数时要检查 sMessage 的值。sMessage 将在函数调用 sayHelloWorld()时(最后一行)被赋值,显示消息 "Hello World".
  在一个函数中定义另一个函数会使闭包变得更加复杂,如下所示:
 
<script>
   
var iBaseNum = 10;
   
function addNumbers(iNum1,iNum2){
     
function doAddition(){
       
return iNum1 + iNum2 + iBaseNum;
     }

     
return doAddition();
   }

</script>

这里,函数 addNumbers() 包括函数 doAddition( 闭包)。内部函数是个闭包,因为它将获取外部函数的参数 iNum1 和 iNum2 以及全局变量 iBaseNum 的值。 addNumbers() 的最后一步 doAddition() 函数根本不接受参数,
它使用的值是从执行环境中获取的。
   可以看到,闭包是 ECMAScript 中非常强大多用的一部分,可以用于执行复杂的计算。就像使用任何高级函数一样,在使用闭包时要当心,因为它们可能会变得非常复杂。
posted on 2008-12-08 11:57 CopyHoo 阅读(223) 评论(0)  编辑  收藏 所属分类: JavaScript

只有注册用户登录后才能发表评论。


网站导航: