【发布时间】:2017-12-09 14:29:09
【问题描述】:
查看 addSuffix 函数的代码时
const addSuffix = (x) => {
const concat = (y) => {
return y + x
}
return concat;
}
let add_ful = addSuffix("ful");
如果我要 console.log(add_ful);为什么我会得到
(y) => {
return y + x
}
而不是
(y) => {
return y + "ful"
}
?
这对我来说是关于闭包最令人困惑的一点,我知道我可以返回一个函数,但我不确定对“ful”的引用存储在函数中的什么位置。
x 的值在 add_ful 函数中存储在哪里?
【问题讨论】:
-
"x 的值存储在 add_ful 函数中的什么位置?" — 在变量
x中。您似乎过于担心 JavaScript 的编译器/解释器是如何工作的,而不是关注 JS 的含义。 -
变量
x不会在addSuffix退出时停止存在。就是这样。 -
您要做的事情是使用调试器完成,而不是控制台。
-
您也可以用更简洁的方式编写它,例如
const addSuffix = x => y => y + x,当调用addSuffix时,通过关闭x返回您的y => y + x函数。
标签: javascript web ecmascript-6 closures