Javascript 如何在闭包中乘法
如何实现将任意数量的数字相乘的锁定功能。调用示例:Javascript 如何在闭包中乘法,javascript,Javascript,如何实现将任意数量的数字相乘的锁定功能。调用示例:乘(1)(2)(3)(4)(5)//120。为了完成这项任务,有必要为内部函数重新定义toString方法,该方法应返回累积结果,但我有resultNaN 函数乘法(参数){ 对于(var i=0;i首先不要将参数用作函数中的参数,因为此变量在函数中可用作函数()参数的类似数组的对象 然后需要有一个内部函数m,它使用参数计算乘积并返回函数本身 内部函数获取用于获取最终结果的toString方法 最后,您需要使用外部函数的所有参数调用内部函数 一
乘(1)(2)(3)(4)(5)//120
。为了完成这项任务,有必要为内部函数重新定义toString
方法,该方法应返回累积结果,但我有resultNaN
函数乘法(参数){
对于(var i=0;i首先不要将参数
用作函数中的参数,因为此变量在函数中可用作函数()参数的类似数组的对象
然后需要有一个内部函数m
,它使用参数计算乘积并返回函数本身
内部函数获取用于获取最终结果的toString
方法
最后,您需要使用外部函数的所有参数调用内部函数
一个小提示,只取小写字母表示不可实例化函数
函数乘法(…args){
函数m(f,…a){
p*=f;
如果(a.长度){
m(…a);
}
返回m;
}
var p=1;//乘法的中性值
m、 toString==>p;
返回m(…args);
}
控制台日志(乘(5)(5)(6)(8));
log(multiply(2,3,4)(5)(6,7));
您可以通过重写方法来实现它,该方法将在主要情况下在内部调用(例如:在使用withalert()
函数、字符串串联等时)
函数乘法(arg){
//计算乘法结果
var res=(this.value | | 1)*arg,
//将此参数绑定为包含先前结果的对象
returnFn=Multiply.bind({
值:res
})
//覆盖toString方法以返回当前结果
returnFn.toString=函数(){
返回res;
}
//返回函数
返回fn;
}
console.log(乘(5)(5)(6)(8));
Multiply
返回的函数应该在每次调用后返回自身
valueOf
应分配给该函数,而不是分配给它的参数,该参数将是一个数字
Multiply
应该调用带有参数(初始数字)的内部函数
无需使用参数
对象,因为始终只有一个参数
函数乘法(initialNum){
var乘积=1;
函数fn(num){
乘积*=num;
返回fn;
};
fn.valueOf=函数(){return product;};
返回fn(initialNum);
}
console.log(0+Multiply(5)(5)(6)(8));
参数。length[i]
没有意义,因为length
返回一个整数。请阅读如何创建“curry”函数或术语“curry”。您只有一个参数要乘法
。感谢您提供了最好的示例和解释!