gpt4 book ai didi

javascript - 为什么我可以在函数中声明之前使用变量

转载 作者:行者123 更新时间:2023-12-03 20:46:19 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





What is the scope of variables in JavaScript?

(27 个回答)


11 个月前关闭。




在此代码片段中,我无法在声明前使用 obj

 const obj = {
value : 10,
x : obj
}

在这里我可以

 const obj = {
func : () => console.log(obj.value),
value : 10,
}
obj.func();

第二个如何编译但第一个失败?
实际上,我想知道自从我使用 obj 以来为什么它们中的任何一个都可以编译在它被实例化之前,据我所知(我可能是错的)首先右侧首先评估,然后分配结果
到变量( obj )

最佳答案

如果我没记错的话,这是一个 JS 提升和范围问题。我相信问题在于obj在您的第一个代码片段中被调用,同时也被声明,这会导致错误。相反,第二个代码片段将函数保留在 obj 的范围内。 ,所以当提升时,变量 const 被赋予一个 obj 的值,该值带有一个尚未被调用的函数,以及一个值。所以当用 obj.func() 调用函数时,它是在变量被赋予完整值之后这样做的。
Better explanation if mine made no sense at all.
或者,您可以尝试分阶段设置变量,即:

const obj = {}
obj.value = 10;
obj.x = obj.value
console.log(obj)

Better Explanation
这真的取决于你的意图是什么,但据我所知,这个概念是一样的。
Extended reading on JS engine, the runtime, and the call stack.

关于javascript - 为什么我可以在函数中声明之前使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65392523/

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