解决方案 »

  1.   

    函数要访问一个变量的时候,就会先从自己的作用域开始,逐步向外层函数的作用域寻找那个变量的值。简而言之就是外层函数不能访问内层,内层能访问外层。没什么大不了的,平时都在用,没想过里面的机制罢了。
    像这样直接在script标签里定义函数大家都写过。name是公有变量。公有域是sayName函数的外层,所以能够访问,这个就是闭包。var name = 'name';
    function sayName () {
      alert(name);
    }换个复杂点的例子:
    var person = (function() {
       var name = 'name';
       var person = {};
       function sayName() {
         alert(name);
       }
       person.sayName = sayName;
       return person;
    })();
    这个例子定义了一个person对象,这个对象有个sayName方法。调用person.sayName()会显示'name'。看上去person是在函数的外层,不应该能访问到函数里的name。但其实调用person.sayName()的时候,调用的是那个内部函数sayName,而内部函数能访问外部函数的变量。这个就是闭包的用处。
      

  2.   

    a 已经没了  b存在的话 里面会有一个 i
      

  3.   

    b存在的话i会存在那么a内的局部环境也会存在吧,a应该也存在吧
      

  4.   

    不懂啊,闭包有什么作用呢?
    是不是这个意思?#include <stdio.h>
    int main()
    {
    int a,b,t;
    printf("intput a,b:\n");
    scanf("%d,%d",&a,&b);
    goto f_start;
    here:printf("a:%d,b:%d\n",a,b);
    return 0;
    f_start:
    {
    t=a;
    a=b;
    b=t;
    }
    goto here; 

      

  5.   

    script标签里 准确的说是一个程序体了,我不知道算不算  
    但是子用父这么说是没错的