Ken*_*rey 18
在对它们的所有引用都消失并收集垃圾之前,对象不会被销毁.返回对象时,调用代码获得对它的引用,并且不会对对象进行垃圾回收.
从技术上讲,被调用函数的堆栈帧在返回时会被销毁.但是,该对象不在堆栈上,而是在堆上.函数对该对象的本地引用位于堆栈上,因此被销毁,但调用代码的引用直到一段时间后才会被销毁.
作为旁注,返回它的方式并不重要,因为函数返回后无法使用该对象.
在JavaScript函数中是否通过引用返回除Boolean和Numbers之外的对象?
确实,JavaScript中的对象总是通过引用传递
当这些对象在属于的函数终止时被破坏时怎么可能?
只销毁引用,而不是值本身.只要没有引用,对象就是垃圾收集的候选对象.
那里有两个很棒的答案,但我想我应该补充一点,它很容易测试:
function modify(arg) {
arg.modified = true;
}
test = 4;
modify(test);
console.log(test.modified); // undefined
test = {};
modify(test);
console.log(test.modified); // true
test = "";
modify(test);
console.log(test.modified); // undefined
Run Code Online (Sandbox Code Playgroud)
其中undefined表示已复制而不是通过引用传递.请注意,字符串也不通过引用传递.
| 归档时间: |
|
| 查看次数: |
9880 次 |
| 最近记录: |