JavaScript中闭包

  听燕十八老师的《JavaScript高级》课程,对JavaScript中闭包的笔记记录!

function t1(){
    var age=20;
    function t2(){
        console.log(age);
    }
    return t2;
}
var tem=t1();
var age=99;
tem();//20  

   在大部分语言中,t1被调用执行则申请内存,并把其局部变量push入栈。t1函数执行完毕,内部的局部变量随着函数的退出而销毁,因此age=20的局部变量已经消失了。但在js中,age=20这个变量却被t2捕捉,即使t1执行完毕,通过t2依然能访问该变量。这种情况---返回的函数,并非孤立的函数,甚至把其周围的变量环境一起打包,形成一个封闭的"环境包",共同返回,所以叫"闭包"!

  一句话概括:函数的作用域取决于声明时,而不取决于调用时!

posted @ 2017-02-09 16:32  陆漫漫  阅读(124)  评论(0编辑  收藏  举报