为什么这个代码没有定义,但没有2

Why does this code get undefined but not 2?

本文关键字:定义 代码 为什么      更新时间:2023-09-26

我试图将此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);

小错误:)应该与退货一起使用。

如果一个函数没有返回任何内容,那么它实际上会返回undefined。在double函数中,有一个函数返回"nothing"=>未定义。

您错过了double函数中的return

    var double = function(f){
        return function(x) {return f(f(x)); }
    }
    var inc = function(x) {return x+1;}
    double(inc)(0);