原始类型(数字、字符串等)按值传递,但对象是未知的,因为它们都可以按值传递(如果我们认为持有对象的变量实际上是对对象的引用) 和通过引用传递(当我们认为对象的变量包含对象本身时)。
尽管最后并不重要,但我想知道呈现通过约定的参数的正确方法是什么。是否有 JavaScript 规范的摘录,它定义了关于这个的语义应该是什么?
原文由 Danail Nachev 发布,翻译遵循 CC BY-SA 4.0 许可协议
原始类型(数字、字符串等)按值传递,但对象是未知的,因为它们都可以按值传递(如果我们认为持有对象的变量实际上是对对象的引用) 和通过引用传递(当我们认为对象的变量包含对象本身时)。
尽管最后并不重要,但我想知道呈现通过约定的参数的正确方法是什么。是否有 JavaScript 规范的摘录,它定义了关于这个的语义应该是什么?
原文由 Danail Nachev 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
这在 JavaScript 中很有趣。考虑这个例子:
这会产生输出:
obj1
根本不是参考,那么更改obj1.item
将不会影响obj1
在函数之外。num
将是100
和obj2.item
将读取"changed"
相反,num
obj2.item
10
"unchanged
相反,情况是传入的项目是按值传递的。但是按值传递的项目 本身就是 一个引用。从技术上讲,这称为 共享呼叫。
实际上,这意味着如果您更改参数本身(如
num
和obj2
),这不会影响输入参数的项目。但是,如果您更改参数的 内部 结构,它将向上传播(与obj1
一样)。