我似乎无法全神贯注地编写在JavaScript中看起来像eight(times(five))
的函数。
示例:
eight(times(five))
应该返回40 three(plus(two))
应该返回5 这是Codewars问题。它为0-9的数字提供了空函数,看起来像“ eight(){}”,为运算符提供了空函数,看起来像“ times(){}”。解决方案应该是执行“八(加(三))”将返回11,依此类推。
答案 0 :(得分:2)
您可以使用返回实际值的值或函数调用的函数。然后,您需要为操作数选择一个函数,以重新调整该函数对该值的闭包。
function eight(fn) {
return typeof fn === 'function' ? fn(8) : 8;
}
function times(fn) {
return function (op) {
return fn() * op;
};
}
console.log(eight(times(eight)));
答案 1 :(得分:0)
我知道我在写此回复时回答了问题...但是我还是会张贴它。
function times(fn) {
return function (op) {
return fn() * op;
};
}
function plus(fn) {
return function (op) {
return fn() + op;
};
}
function minus(fn) {
return function (op) {
return fn() - op;
};
};
createNumbers = () => {
var num = 0;
['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'].forEach((number) => {
let val = num;
window[number] = (fn) => {
return fn ? fn(val) : val;
};
num++;
});
};
createNumbers();
three(times(five)); // 15
eight(plus(two));// 10
etc