javascript - 为什么此代码未定义但不是 2?

标签 javascript scheme

我尝试将此 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/

相关文章:

javascript - Ajax 发送并保存 Base64 编码图像到服务器

list - Scheme中的冒泡排序

lisp - lisp/scheme 中的符号到底是什么?

user-interface - 在 Racket GUI 中获取选定的文本字段%

javascript - 在 View Angular2 中渲染动态数组

javascript - 搜索时不弹出模态功能,且 "close"功能未关闭

c++ - c++ for循环怎么改成scheme

compiler-construction - 适用于ARM处理器的Scheme编译器

javascript - JAVASCRIPT音频应用程序:按钮不会根据设备而改变

javascript - 如何只在第一次显示动画 html css