【问题标题】:Is func() the same as func?func() 和 func 一样吗?
【发布时间】:2021-04-14 16:40:12
【问题描述】:

在从一本“雄辩”的书中学习 JavaScript 时,我偶然发现了这个程序:

function wrapValue(n) {
  let local = n;
  return () => local;
}

let wrap1 = wrapValue(1);
let wrap2 = wrapValue(2);
console.log(wrap1());
// → 1
console.log(wrap2());
// → 2

我的问题是输出是wrap1() 而不是wrap1

甚至可以做到console.log(wrap1)吗?
如果可能的话,wrap1()wrap1 是同一个东西吗?

编辑:他们将问题标记为与What is the difference between a function call and function reference? 重复,但我的问题是认为在let wrap1 = wrapValue(1); 中,wrap1 获得了一个值,但事实是它获得了一个函数。而已。所谓的重复与我的失明无关。

【问题讨论】:

标签: javascript function variables binding


【解决方案1】:

wrapValue 返回一个 lambda 函数,这是 console.log(wrap1) 将打印的内容。 console.log(wrap1()) 实际运行该函数并打印结果。

【讨论】:

  • 感谢您的回答。因此,如果我做对了,输出将是相同的,但 wrap1() 做了一个不必要的进一步步骤,不是吗?
  • 不,输出不同。第一个打印函数本身,但第二个打印函数的结果。
  • 您的意思是,在第一种情况下,输出将类似于:function wrapValue(n) { let local = n; return () => local; }?
  • 不,只是 () => 本地。您可以检查 chrome devtools
猜你喜欢
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2010-10-11
  • 1970-01-01
  • 2020-04-14
  • 1970-01-01
相关资源
最近更新 更多