gpt4 book ai didi

javascript - JavaScript 函数中的参数和临时变量

转载 作者:行者123 更新时间:2023-11-30 19:09:53 26 4
gpt4 key购买 nike

我来自 C 和 C++ 语言,我很难理解 JavaScript 的一些事情:输入函数时变量(参数)是否在 JavaScript 中复制?

在 C/C++ 中,函数的参数是重复的,并且不能在函数内更改(当然您可以将指针作为参数传递,但它们本身不能更改)。在 JavaScript 中,看起来(例如使用闭包)您可以在函数内声明变量,然后使用它们。您还可以更改函数内的参数,并且之后它们会保留这些修改。

如果我说 JavaScript 应用程序中只有一个执行上下文,我对吗?

最佳答案

在 C 中,您可以通过值传递结构,在这种情况下,结构会被复制到函数中(如果返回它,则从函数中复制出来),或者您可以传递指向结构的指针,在这种情况下,结构不会被复制,并且您所做的所有更改对调用者都是可见的。在 C++ 中,它是相同的,只是您也可以通过引用传递,这在幕后就像传递指针,但编译器对您隐藏了一点。

将 Javascript 视为通过引用传递所有结构。除非您明确复制,否则不会复制任何内容。

此外,Javascript 变量不包含变量中的对象,它们仅包含对对象的引用。因此,在 C/C++ 术语中,所有对象都是基于堆的,没有任何对象存储在堆栈上。

对于诸如数字之类的简单类型,可能会创建一个拷贝,但由于您无法分辨它的作用并不重要。字符串可能是通过引用传递的,但由于您无法修改现有字符串,因此也无法判断这一点。

我说可能是因为调用的语义很重要,不同的 Javascript 运行时可以选择以不同的方式实现事物,前提是您无法区分差异。

关于javascript - JavaScript 函数中的参数和临时变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42387060/

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