“有回报的函数”和“没有返回的函数”之间的区别

Difference between “function with return” and “function without return”

本文关键字:函数 之间 区别 返回 回报      更新时间:2023-09-26

如何通过js访问内部函数。换句话说,"有回报的函数"和"没有返回的函数"有什么区别?

带返回

function makeAdder(x) {
    function add(y) {
       console.log(x,y)
       return x+y;
    };
    return add;
}
makeAdder(3)(4)   // 7

没有

function makeAdder(x) {
    function add(y) {
       console.log(x,y)
       return x+y;
    };
}
makeAdder(3)(4)   // error

如果我想访问像makeAdder(3).add(4)这样的add(),如何编码?

当函数没有 return 语句时,它会隐式返回 undefined 。如果要调用.add,则函数应返回一个具有add属性的对象:

function makeAdder(x) {
    return {
      add(y) {
        return x+y;
      }
    };
}
console.log(makeAdder(3).add(4))   // 7

或者,您也可以将 ES6 类用于更传统的 OO 方法:

class Adder {
  constructor(x) {
    this.x = x  
  }
  
  add(y) {
    return this.x + y
  }
}
console.log(new Adder(3).add(5))

在这种情况下,makeAdder应该返回object

当调用makeAdder(3)时,它会返回object具有键作为保存函数的add

function makeAdder(x) {
  function add(y) {
    console.log(x, y)
    return x + y;
  };
  return {
    add: add
  };
}
console.log(makeAdder(3).add(4));