闭包题

  • 函数在执行的过程中,先从自己内部找变量;
  • 如果找不到,再从创建当前函数所在的作用域去找,依此往上;
  • 注意找的是变量的当前的状态
var a = 1
function fn1(){
  function fn3(){
    function fn2(){
      console.log(a)
    }
    fn2()
    var a = 4
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() //输出多少   //undefined
var a = 1
function fn1(){
  function fn3(a){
    function fn2(){
      console.log(a)
    }
    fn2()
    a = 4
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn(5) //输出多少  5
var a = 1
function fn1(){
  function fn3(){
    var a = arguments[0]  //相当于
    function fn2(){
      console.log(a)
    }
    fn2()
    a = 4
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn(5) //输出多少
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容