我必须删除我的数组的一些元素,但没有重新排列数组.
如果我使用"删除"删除我的元素,"漏洞"会占用内存吗?
var array=["A","B","C"];
delete array[1]; // array -> ["A", undefined, "C"]
Run Code Online (Sandbox Code Playgroud)
我认为删除的元素确实被删除所以它不占用内存空间,是不是真的?
试试用,
array.splice(index, 1);
Run Code Online (Sandbox Code Playgroud)
请参阅掌握JavaScript数组.
完全依赖于实现。在内部,所有 JS 表示最终都会转换为稀疏表示,但稀疏表示往往每个元素使用更多内存,并且访问速度比非稀疏数组更慢。
因此,从密集数组中删除一个值不太可能释放任何内存,但在删除足够多的元素后,实现可能会转换为稀疏表示以节省总体内存。
注意:您删除的索引处的对象或值不会立即删除 - 删除只是从对象中删除属性槽 - 该对象/值只会在 GC 过程中被删除,并且只有在没有其他属性时才会被删除参考。
| 归档时间: |
|
| 查看次数: |
7466 次 |
| 最近记录: |