【发布时间】: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 获得了一个值,但事实是它获得了一个函数。而已。所谓的重复与我的失明无关。
【问题讨论】:
-
wrapValue返回一个箭头函数() =>这就是为什么你需要通过添加()来调用它来获得结果 -
@KubwimanaAdrien 哦,我没看到!所以我不能做
console.log(wrap1)因为wrap1不是返回值而是返回函数,对吧? -
@Davide 没错
标签: javascript function variables binding