javascript - 为什么console.log粘贴的是函数而不是值?

标签 javascript

所以我正在关注 Douglas Crockfords 关于 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。我的问题是,为什么第一个不起作用?而这个呢?两者都是返回另一个函数的函数,该函数最终返回一个值。

最佳答案

why does the first one not work?

第一个确实有效,完全正如它应该的那样。您调用一个函数,它返回一个函数,但您不调用第二个函数。您可以打印它。

关于javascript - 为什么console.log粘贴的是函数而不是值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42699031/

相关文章:

javascript - 单击图像打开/弹出文件字段

javascript - 下面代码末尾的 () 做什么?

javascript - 为什么我的组件模板没有出现在 Vue 中?

javascript - 为什么即使窗口宽度较小,window.innerWidth 也会返回 477px?

javascript - Singleton 中的公共(public)函数调用自身

javascript - 表单中是否允许多个 onsubmit javascript 函数?

javascript - IntersectionObserver 无法在 Safari 或 iOS 中工作

JavaScript 代码未按所需顺序运行(Node.js、MongoDB)

javascript - document.ready 与 document.onLoad

javascript - 为什么 Javascript 中不经常使用链表