javascript 闭包
阿隆佐·邱奇(Alonzo Church,1903年6月14日-1995年8月11日)是美国数学家,1936年发表可计算函数的第一份精确定义,对算法理论的系统发展做出巨大贡献。邱奇在普林斯顿大学受教并工作四十年,曾任数学与哲学教授。1967年迁往加利福尼亚大学洛杉矶分校。 ——百度百科
参考廖雪峰博客的闭包模块
/*
* // 闭包
*/
// 定义数字0:
var zero = function (f) {
return function (x) {
return x;
}
};
// 定义数字1:
var one = function (f) {
return function (x) {
return f(x);
}
};
// 定义加法:
function add(n, m) {
return function (f) { //add f
return function (x) { // f console
return m(f)(n(f)(x));
}
}
}
//定义乘法
function multi(n, m){
}
// 0
(zero(function () {
console.log('print 0 times');
}))();
// 1
(one(function () {
console.log('print 1 times');
}))();
// 计算数字2 = 1 + 1:
var two = add(one, one);
// 计算数字3 = 1 + 2:
var three = add(one, two);
// 计算数字5 = 2 + 3:
var five = add(two, three);
//如何证明上述加法成立
给2传一个函数,会打印2次:
(two(function () {
console.log('print 2 times');
}))();
// 给3传一个函数,会打印3次:
(three(function () {
console.log('print 3 times');
}))();
// 给5传一个函数,会打印5次:
(five(function () {
console.log('print 5 times');
}))();
然而关于减法,乘法和除法的推算我没能扩展不来。