几个需要注意的闭包

来源:互联网 发布:天拓网络 编辑:程序博客网 时间:2024/05/01 04:53
/* ------------------------------------------------------*/ function a() {      var i = 0;     function b() {      console.log(++i);   }    return b;}                        var c = a();        //执行完var c=a()后,变量c指向了函数b,再执行c()后就会弹出一个窗口显示i的值(为1)。c();                       //输出1/* -----------------------------------------------------*/ function a() {     var i = 0;     return function(){         console.log(++i);     }}var c = a();c();                     //输出1(和上面的一样)/* -----------------------------------------------------*/(function() { var i = 0;    return function(){          console.log(++i);      }})()();                    //输出1/* -----------------------------------------------------*/var i = 0; (function() {    return function(){          console.log(++i);      }})()();                    //输出1/* -----------------------------------------------------*/ (function(i) {    return function(){          console.log(++i);      }})(0)();                  //输出1/* -----------------------------------------------------*/for (var i = 0; i < 3; i++) {    setTimeout((function(i) {                     return function() {            console.log(i);        };    })(i), 2000);    console.log(i);}              //输出 10 11 12 (隔两秒后)0 1 2/* -----------------------------------------------------*/for (var i = 0; i < 3; i++) {    setTimeout((function(i) {        return function() {            console.log(i);        };    })(i)(), 2000);    console.log(i);}            //立即输出 0 10 1 11 2 12 ,(两秒后运行程序结束)
1 0
原创粉丝点击