Is JavaScript pass-by-reference or pass-by-value?
本问题已经有最佳答案,请猛点这里访问。
javascript语言是传递引用还是传递值语言?
原始类型与对象是否不同?
它实际上使用了一个名为"共享呼叫"的评估策略。
所有类型都按值传递。没有传递引用,否则您将能够修改在函数调用站点声明的变量的内容。通常人们说对象是通过JS中的引用传递的。它们实际上是通过共享传递的,这意味着您可以修改对象的属性,这些更改对于那些持有对该对象的引用的人来说是可见的,但是引用本身是不可修改的。
对象通过引用传递,而原语通过值传递。
注意,原语值包括以下内容:
- 数
- 弦
- 布尔
undefined null
您可以在MDN上找到有关函数的更多详细信息。
除了原语以外的所有东西都是通过引用传递的。Javascript中的所有内容都是一个对象。正如Sirko所说,对象是通过引用传递的。
所以函数/数组/对象都是通过引用传递的,不管您是在谈论附加到var的根对象,还是在谈论对象的属性/方法,链接3个点的深度,或者您是在谈论数组中的对象,作为对象的属性,在对象数组中……