2013-02-23 75 views

回答

5

通過引用傳遞對象,而通過值傳遞基元。

注意,即原始值如下:

  • 字符串
  • 布爾
  • undefined
  • null

你可以在找到一些更細節。

8

它實際上使用名爲call by sharing的評估策略。

所有類型都按值傳遞。沒有引用傳遞,否則你可以修改在函數的調用位置聲明的變量的內容。通常人們會說在JS中通過引用傳遞對象。它們實際上是通過共享傳遞的,這意味着您可以修改對象的屬性,並且這些更改對於那些持有對該對象的引用的人可見,但引用本身不可修改。

+3

這類似於說您給了一個指向對象的指針,然後您可以修改該對象的屬性,但是如果您嘗試在內部重新分配對象的值,則只是重置指針。 – Norguard 2013-02-23 18:33:20

1

除原語以外的所有內容均通過引用傳遞。
幾乎所有的JavaScript都是一個對象。正如Sirko所說,對象通過引用傳遞。所以函數/數組/對象都是通過引用傳遞的,不管你是在談論附加到var的根對象,還是你在談論一個對象的屬性/方法,鏈深度爲3個點,重新討論數組中的對象,作爲對象的屬性,對象的數組...

相關問題