Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在闭包中乘法_Javascript - Fatal编程技术网

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
方法,该方法应返回累积结果,但我有result
NaN

函数乘法(参数){

对于(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));
您可以通过重写方法来实现它,该方法将在主要情况下在内部调用(例如:在使用with
alert()
函数、字符串串联等时)

函数乘法(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”。您只有一个参数要
    乘法
    。感谢您提供了最好的示例和解释!