簡體   English   中英

理解不足的javascript不可變變量和垃圾收集器

[英]undersatnding javascript immutable variable and garbage collector

var foo="text";
foo="another text";
console.log(foo); //=>"another text"

我知道javascript中的字符串是不可變的。 因此,這里var foo指向一個值為“ text”的內存塊。 在第二條語句之后,foo指向另一個值為“另一個文本”的存儲塊。

現在第一個值(“文本”)發生了什么? 它會存在於內存中直到垃圾收集器通過嗎?

這取決於實現。 如果JS解釋器不共享公共字符串,那么它可能會立即知道在為變量分配新字符串時可以釋放原始字符串,並且可以立即執行操作,但不一定如此。

如果它在多個變量之間共享公共字符串,那么它可能只等到垃圾回收器運行並意識到沒有任何對字符串塊的引用。

這是依賴於實現的,沒有任何標准指定(也不需要這樣做)。

什么是JavaScript中的字符串? 字符數組對嗎? 當您分配var x ='test'; 它分配一個內存地址,該地址包含字符數組和結尾處的空參考字符。 用於垃圾收集器。 現在,您分配x ='另一個測試',它肯定會分配一個新的內存地址,但是變量名是正確的嗎? 這意味着新字符串數組的初始指針引用x的第一個字符數組索引,當您調用x時,它將返回新分配的值。

暫無
暫無

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

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