所以我正在关注道格拉斯·克罗克福兹关于JS的讲座。他的一个练习是“编写一个接受一个参数的函数,并返回一个返回参数的函数”。接下来的问题是“编写一个从两个调用中添加的函数”。
我得到了两者的答案,我没有得到的是为什么一个人没有发布到控制台而另一个没有。这就是我的意思。这是我对第一个问题的回答:
function retFunc(x){
return function(){
return x;
};
}
console.log(retFunc(4));
这会将以下内容发布到控制台:
function(){
return x;
}
但是,如果我将其更改为此,则会将4发布到控制台(这是我想要的):
var idf = retFunc(4);
console.log(idf());
现在这是我对第二个问题的回答:
function addf(x){
return function(y){
return x+y;
};
}
console.log(addf(3)(4));
这样可行,它会向控制台吐出7。我的问题是,为什么第一个不起作用?这一个呢?两者都是返回另一个函数的函数,最终返回一个值。
答案 0 :(得分:3)
为什么第一个不起作用?
第一个确实有效,完全。你调用一个函数来返回一个函数,但你不会调用第二个函数。你改为打印它。
答案 1 :(得分:1)
不同之处在于,在第一种情况下,您没有调用返回的函数,但在第二种情况下,您是
console.log(retFunc(4));
var idf = retFunc(4);
console.log(idf()); // <-- note the parentheses.
答案 2 :(得分:0)
而不是console.log(retFunc(4));试试console.log(retFunc(4)()); 你有两个嵌套的功能。所以你也应该打电话给内心。