songning0605 / blog

整理记录
1 stars 0 forks source link

闭包 #33

Open songning0605 opened 4 years ago

songning0605 commented 4 years ago

参考:搞懂闭包

概念

闭包是指有权访问另一个函数作用域中的变量的函数。

用代码表示就是:函数A可以访问函数B中的变量:

function B() {
  var out = 'B';
  function A() {
    console.log(out);
  }
}

原理

闭包的原理,就是把闭包函数的作用域链保存了下来。作用域链涉及到的知识点有 执行上下文作用域链垃圾回收

闭包相关的知识点可以查看 冴羽的博客

面试回答技巧:

思考题

function fun(n, o) {

  console.log(o)

  return {

    fun: function (m) {

      return fun(m, n)

    }

  }

}

// ?处 的打印结果

var a = fun(0) // ?

a.fun(1) // ?

a.fun(2) // ?

a.fun(3) // ?

var b = fun(0).fun(1).fun(2).fun(3) // ?

var c = fun(0).fun(1) // ?

c.fun(2) // ?

c.fun(3) // ?