对闭包的一步步深入

闭包应该是js中的一个难点了,面试官们也对这个问题问的最多,自己也在这里踩了许多坑,以下先看看简单的案列

step1:先来看下简单的问题

function outer(){

 var i=100;   

   console.log(i)

}

var result=outer();//得到100

step2:进一步了解问题

function outer(){
   var i=100;
   function inner(b){
       console.log(b*2)
   }
   console.log(i)
   return inner;
}
var result=outer();
result(5);//得到100,10  这里的5是传参给inner里面的b

step3:进一步了解问题

function outer(){
   var i=100;
   function inner(a){
       console.log(a*2)
           function four(b){
               console.log(b*4)
           }
     return four;
   }
   console.log(i)
   return inner;
}
var result=outer();
result(50)(4); 得到100,100,16   //50是传参给inner里面的a,4是传参给four里面的b

http://www.jb51.net/article/84100.htm

http://www.jb51.net/article/85775.htm

原文地址:https://www.cnblogs.com/yanzai/p/6770095.html