Skip to content

闭包

什么是闭包?

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

js
 function foo (){
  var name = 'snail'
  return function(){
    console.log('my name is '+name)
  }
}
var bar = foo();
bar();

面试题

ts
//请补全下面的 Javascript 代码中的 add 方法
function add(n) {

}
//todo
add(1)(2)() //3
add(1)(2)(3)(4)() //10
add(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(); /* 10 */

//答案

function add(n){
  let res=n
  //这个内部一个cb函数
  function cb(args?){
    //判断是否有参数
    //如果没有就直接返回结果
    //如果有就继续返回一个函数cb
   if (args === undefined) {
      return res
    } else {
      res += args
      return cb
    }
  }

  return cb
}