编写函数实现如下语法的功能:
var a = calculate(2)(3)(’+’); //5
var a = calculate(2)(3)(’*’); //6
实现代码:
function calculate() {
const args = Array.prototype.slice.call(arguments);
const fn = function () {
var arg_fn = Array.prototype.slice.call(arguments);
return calculate.apply(null, args.concat(arg_fn));
}
fn.valueOf = function () {
let sIndex = args.length - 1;
let sArgs = args.slice(0, sIndex);
if (args[sIndex] == "+") {
return sArgs.reduce((a, b) => a + b);
}
if (args[sIndex] == "*") {
return sArgs.reduce((a, b) => a * b);
}
if (args[sIndex] == "-") {
return sArgs.reduce((a, b) => a - b);
}
if (args[sIndex] == "/") {
return sArgs.reduce((a, b) => a / b);
}
else { //默认为加法
return args.reduce((a, b) => a + b);
}
}
return fn;
}
let s = calculate(1)(2)(3)(4)(5)("+");
// function
console.log(typeof s);
// 15
console.log(Number(s))