-
Notifications
You must be signed in to change notification settings - Fork 0
js编程题
jiang2016tao edited this page Nov 17, 2017
·
3 revisions
1.编写函数f,例如:f(1,2)(3)(4,5)实现(1+2)*3*(4+5),返回结果81。
var f = (function () {
var initArgument = 1;//默认初始值为1
return function(num) {
var lens = arguments.length;
var totals = 0;//这边通过遍历拿参数和存储在totals
if(lens>0){
for(var i = 0;i<lens;i++){
totals += parseInt(arguments[i]);
}
} else {
return initArgument;//这边最关键,通过lens判断函数是否调用结束,当参数为0时,表示已经结束,这时候把initArgument这个值返回去就是所有的参数和的乘积了
}
initArgument *= totals;//每次函数调用都会进行参数和相乘
console.log(arguments.callee)
return arguments.callee;//包含当前正在执行的函数,这个是返回上面重复调用的函数地方(arguments.callee就是指第13行到26行这个闭包)
}
})();
var result = f(1,2,3)(4,5)();
console.log("结果"+result) 这个还是会有些问题,一定要有个空的()。arguments.callee可以参考https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments/callee