我一直在这里阅读
https://developer.mozilla.org/en-US/docs/JavaScript/Memory_Management#Allocation_via_function_calls
而这些行让我有点困惑:
var s = "azerty";
var s2 = s.substr(0, 3); // s2 is a new string
// Since strings are immutable value, JavaScript may decide
// to not allocate memory, but just store the [0, 3] range.
据评论所说,JavaScript 可能决定不分配内存,而只是存储范围 [0,3]。现在,在存储之前难道不必分配内存吗?如果真是这样,那么究竟会发生什么,使得存储的范围被存储在未被其他值占用的空闲空间中?
s1
是一个非常长的字符串,而s2
被定义为这个长字符串的一个短“范围”。使用这种方案,只要s2
存在,你就无法对s1
进行垃圾回收。 - NullUserException