2013-02-23 45 views

回答

5

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

注意,即原始值如下:

  • 字符串
  • 布尔
  • undefined
  • null

你可以在找到一些更细节。

8

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

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

+3

这类似于说您给了一个指向对象的指针,然后您可以修改该对象的属性,但是如果您尝试在内部重新分配对象的值,则只是重置指针。 – Norguard 2013-02-23 18:33:20

1

除原语以外的所有内容均通过引用传递。
几乎所有的JavaScript都是一个对象。正如Sirko所说,对象通过引用传递。所以函数/数组/对象都是通过引用传递的,不管你是在谈论附加到var的根对象,还是你在谈论一个对象的属性/方法,链深度为3个点,重新讨论数组中的对象,作为对象的属性,对象的数组...

相关问题