gpt4 book ai didi

javascript - 剖析一个简单的 Javascript 闭包

转载 作者:行者123 更新时间:2023-11-28 17:41:57 28 4
gpt4 key购买 nike

查看 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 的每个地方进行内联 - 代码仍然包含一个变量 x ,该变量在遇到时会动态解析(它仍然是可写的)。

该值存储在包含变量的作用域对象中,并由函数对象引用(这就是我们所说的 closure )。当您记录函数对象时(而不仅仅是 .toString() 生成的函数代码),您还可以在开发工具中检查这个隐藏的 [[Scope]] 槽。 :

关于javascript - 剖析一个简单的 Javascript 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47729592/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com