“返回功能”与“不返功能”的区别

时间:2016-11-09 11:02:24

标签: javascript

如何通过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

如果我想访问add() makeAdder(3).add(4),请问如何编码?

2 个答案:

答案 0 :(得分:1)

在这种情况下,

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));




答案 1 :(得分:1)

当函数没有return语句时,它会隐式返回undefined。如果你想像你描述的那样调用.add,你的函数应该返回一个add属性的对象:

function makeAdder(x) {
    return {
      add(y) {
        return x+y;
      }
    };
}

console.log(makeAdder(3).add(4))   // 7

或者,您也可以使用ES6 classes来实现更传统的面向对象方法:

class Adder {
  constructor(x) {
    this.x = x  
  }
  
  add(y) {
    return this.x + y
  }
}

console.log(new Adder(3).add(5))