由于 JavaScript 中的字符串是基本类型,将字符串传递给函数是否会创建它的本地副本?我想知道这一点,因为在创建字符串后您无法对其进行修改,因此 JavaScript VM 不只是将字符串的地址传递给内部函数似乎是不合逻辑的。
如果有人要告诉我我不应该担心这个(在与网络开发人员交谈时经常发生这种情况),我正在开发 HTML5 游戏,垃圾收集是一个主要问题,所以我真的需要知道。
最佳答案
字符串将通过引用传递。
字符串是不可变的,所以每当您尝试更改它时,您都会得到一个新字符串(例如,通过执行 value+="more"
)。
@T.J. Crowder:按值(value)与按引用 - 如果您正在查看语言定义,那么您是正确的。但是我不认为有一个实际创建字符串副本的实现,因为它会非常慢。此外,由于字符串是不可变的基元,因此无需复制它们,因为它们无法更改。
关于javascript - 将字符串传递给函数是按值复制还是按引用传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15664372/