如何通过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)
,请问如何编码?
答案 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))