【发布时间】:2021-10-22 09:14:19
【问题描述】:
我刚开始学习 JavaScript 中的闭包,我正在尝试理解一个基本问题。
例如,我正在尝试实现 sum 方法:sum(1)(4)(5)
const sum = (a) => {
return (b) => {
if(typeof b === 'number')
return sum(a+b)
return a;
}
}
当我调用:console.log(sum(1)(4)(5)()) 时,它运行良好并返回 10。但是,如果我调用 console.log(sum(1)(4)(5)),它会返回 [Function (anonymous)]。为什么?
谢谢
【问题讨论】:
-
in sum(1)(4)(5)() 最后一次调用会导致 if 语句被跳过,
return a被执行。但是,当您继续将数字传递给函数时,它会进入return sum(a+b),然后返回一个新的clojure -
因为函数在不同调用时返回不同的东西
-
顺便说一句,当意图实现一个可以接受任意数量参数的函数时,有必要标记参数的结尾。您通过最后一个空呼叫来执行此操作。所以我认为你不能摆脱最后一个电话。
-
@AliBaykal 你是说如果不插入最后一个括号就没有什么可以让它工作
-
@user2792523,是的
标签: javascript closures