【发布时间】:2019-08-08 14:21:36
【问题描述】:
我遇到了一个如下的 javascript 代码示例,但不清楚它是如何工作的。我习惯于将函数作为回调传递,但我似乎无法掌握如何
- 变量 func 可以接受参数 (a, b),并且
- 为什么会以这种方式调用函数对。
function cons(a, b) {
const pair = func => {
return func(a, b);
};
return pair;
}
function car(pair) {
return pair((a, b) => {
return a;
});
}
function cdr(pair) {
return pair((a, b) => {
return b;
});
}
console.log(cons(1, 2))
// ƒ pair(func) {return func(a, b);}
console.log(car(cons(1, 2)))
// 1
console.log(cdr(cons(1, 2)))
// 2
【问题讨论】:
-
(1) 是因为
pairis a closure overaandb。我不明白(2)。 -
似乎是 lambda 演算中 TRUE、FALSE 和 IFELSE 方法的副本。
标签: javascript function ecmascript-6