我尝试将此 Scheme 代码转换为 Javascript:
(define (double f)
(lambda (x) (f (f x))))
(define (inc x) (+ x 1))
((double inc) 0)
((double inc) 0)
表示 (inc (inc 0))
,所以它返回 2。
这是我的 Javascript 代码:
var double = function(f){
return function(x) { f(f(x)); }
}
var inc = function(x) {return x+1;}
double(inc)(0);
但是 double(inc)(0)
返回 undefined,而不是 2。为什么?
最佳答案
var double = function(f){
return function(x) { return f(f(x)); }
}
var inc = function(x) {return x+1;}
double(inc)(0);
小错误 :) 应该适用于返回。
如果一个函数不返回任何东西,它实际上返回未定义的。 在你的双重功能中,你有一个返回“无”的函数=>你未定义。
关于javascript - 为什么此代码未定义但不是 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12247469/