1 Star 0 Fork 0

一路踩红/interview

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
柯里化函数.html 1.63 KB
一键复制 编辑 原始数据 按行查看 历史
一路踩红 提交于 2020-01-01 18:05 . yuan
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>柯里化函数</title>
</head>
<body>
<script>
function add(x, y, z) {
return x + y + z
}
function curry(fn, arg) {
arg = arg || []
var len = fn.length
return function () {
// var subArg = [...arg, ...arguments]
// var subArg = arg.concat(Array.from(arguments))
var subArg = arg.concat([].slice.call(arguments))
if (len === subArg.length) {
// return fn.call(this, ...subArg)
return fn.apply(this, subArg)
} else {
return curry.call(this, fn, subArg)
}
}
}
var res = curry(add)
console.log(add(5, 6, 2))
console.log(res(5)(6)(2))
// const curry2 = (fn) => {
// const _c = (rest_num, args_list) => {
// if (rest_num <= 0) {
// return fn(...args_list);
// }
// return (...args) => _c(rest_num - args.length, [...args_list, ...args])
// }
// return _c(fn.length, []);
// }
// // example
// const plus = (a, b, c, d) => a + b + c + d;
// const curry_plus = curry2(plus);
// curry_plus(1, 2, 3, 4) // 10
// curry_plus(1)(2, 3, 4) // 10
// curry_plus(1)(2)(3, 4) // 10
</script>
</body>
</html>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/a13078253870/interview.git
[email protected]:a13078253870/interview.git
a13078253870
interview
interview
master

搜索帮助