“有回报的函数”和“没有返回的函数”之间的区别
Difference between “function with return” and “function without return”
如何通过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));
相关文章:
- Jquery在函数之间传递表行
- d3中堆栈函数和嵌套函数之间的差异
- 如何在函数之间切换
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟
- Javascript-defineProperty和直接在对象上定义函数之间的区别
- 在函数之间传递javascript变量
- 两个函数之间的角度承诺
- Javascript创建函数,以便在其他函数之间共享变量
- 直接绑定和使用每个函数之间的区别
- 节点模块对象范围:在所有函数之间共享一个对象
- js 函数之间使用参数的区别
- angularjs+ui.router:指令控制器和链接函数之间的不同行为
- 如何在onchange事件中的两个函数之间进行选择
- 在使用ajax调用的函数之间调用相同的函数
- 在JavaScript函数之间传递JSON值
- 试图理解JavaScript中原型和构造函数之间的区别
- 什么'新函数和函数之间的区别
- javascript函数之间的OR运算符
- 以下jquery和requireJS函数之间的区别
- 在Javascript中的函数之间共享变量