簡體   English   中英

Array.push() 方法在 Javascript 中是如何工作的?

[英]How does Array.push() method work exactly in Javascript?

當我在線學習 CS class 時,主題是關於 Array 和 memory 工作原理的概述,老師使用 C 作為示例,因為您不能簡單地添加額外的元素作為一個從 JavaScript 開始的初學者開發人員,盡管我知道 JavaScript 是一種高級語言,並且 Array.push() 已經是一種熟悉的 ZC1C425268E68385D1AB5074C17A94F14,但我似乎不適合這種情況,但它似乎不適合我的上下文已經通過谷歌和 StackOverflow 搜索,我只是沒有看到人們討論為什么 JavaScript 可以只向現有數組添加額外的元素。

JavaScript 是否只是簡單地創建一個帶有添加元素的新數組並將我已經分配給新數組的變量指向新數組或其他東西?

JavaScript Array不像 C 數組,它更像是 C++ std::vector 它通過在需要時動態分配 memory 來增加長度。

std::vector的參考文檔中所述:

向量通常比 static arrays 占用更多的空間,因為分配了更多的 memory 來處理未來的增長。 這樣,向量不需要在每次插入元素時重新分配,而僅在額外的 memory 用盡時才需要重新分配。 [...] 就性能而言,重新分配通常是代價高昂的操作。

javascript 中的 Arrays 與 C 中的數組不同。 在 C 中,您將分配一個具有類型和固定大小的新數組,如果您想更改大小,則必須創建一個新數組。 另一方面,對於 javascript arrays 如果您在 MDN 上查看 arrays的描述,您會看到這一行。

Arrays 是類列表對象,其原型具有執行遍歷和變異操作的方法。 JavaScript 數組的長度及其元素的類型都不是固定的。 由於數組的長度可以隨時更改,並且數據可以存儲在數組中的非連續位置

因此,雖然它被稱為“數組”,但它更像是一個列表,可以讓您自由調整它的大小(並且還可以存儲任何東西,因為 javascript)。

還有另一個關於 SO 上的 push/pop 方法的語義的問題,可以更清楚地說明這些問題: Javascript Array Push 代碼如何在內部工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM