js闭包经典面试题add(1)(2)(3),计算1+2+3的值

2021-04-07  本文已影响0人  TurnHug

首先实现一个简单闭包 传入一个参数

function add (x) {
  var count = x;
  function add2 () {
    return count += 1;
  }
  return add2;
}
var result = add(0);
console.log(result);  //打印一个函数add2
console.log(result());  //1
console.log(result());  //2

传入两个参数

function add(x) {
  var count = x;
  function add2 (y) {
    return count += y;
  }
  return add2;
}
var result = add(0);
console.log(result);  //打印函数add2
console.log(result(1)); //1,相当于console.log(add1(0)(1))
console.log(result(2)); //3

传入三个参数

function add (x) {
  var count = x;
  function add2 (y) {
    var num = x + y;
    function add3 (z) {
      return num += z
    }
    return add3;
  }
  return add2;
}
var result = add(1);
console.log(result); //打印函数add2
console.log(result());//打印函数add3
console.log(result(2)(3));//6

// 可以采用链式操作调用
// console.log(add(1)(2)(3)); //6
上一篇下一篇

猜你喜欢

热点阅读