JavaScript是按引用传递还是按值传递?

时间:2013-02-23 18:19:39

标签: javascript html oop

JavaScript语言是传递引用还是按值传递语言?

对象的原始类型Vs也不同吗?

3 个答案:

答案 0 :(得分:8)

它实际使用名为call by sharing的评估策略。

所有类型都按值传递。没有pass-by-reference,否则你将能够修改在函数的调用站点声明的变量的内容。通常人们会说在JS中通过引用传递对象。它们实际上是通过共享传递的,这意味着您可以修改对象的属性,这些更改对于持有对该对象的引用的人来说是可见的,但引用本身是不可修改的。

答案 1 :(得分:5)

对象通过引用传递,而基元通过值传递。

请注意,原始值包括以下内容:

  • 字符串
  • 布尔
  • undefined
  • null

您可以在MDN on Functions找到更多详情。

答案 2 :(得分:1)

除了原始之外的所有内容都通过引用传递 几乎所有JavaScript都是一个对象。 正如Sirko所说,对象通过引用传递。

所以函数/数组/对象都是通过引用传递的,无论你是在谈论附加到var的根对象,还是你在讨论对象的属性/方法,链接3个点,或者你是在一个对象数组中讨论数组中的对象,作为对象的属性......