2017-02-15 45 views

回答

2

是的,它是完全安全的,它是聲明局部變量的預期方式,您稍後想要返回該函數的值。由於JavaScript是垃圾收集語言,本地變量可以安全地包含任何類型的值。它可以有一個簡單的原始的像你這樣的表現,或者甚至可以包含這樣的對象:

function test() { 
 
    let result = {cnt: 0}; 
 
    result.cnt++; 
 
    return result; 
 
} 
 

 
let obj = test(); 
 
console.log(obj);  // shows {cnt: 1}

,因爲雖然你是返回這是的範圍內聲明的對象這是安全的當函數返回時,函數和函數作用域將超出作用域,因爲Javascript是一種垃圾收集語言,對象將在函數作用域之外的函數返回值分配的任何位置單獨生存。

+0

謝謝你的回答。稍後gc會收集它,並使obj變得不明確? – longlifelearner

+0

@longlifelearner - GC只會清理不再使用的東西。因此,如果您已將obj分配給您的代碼仍可訪問的變量,那麼它將不會被GCed。 GC就是這樣工作的。它清除任何代碼無法訪問的內容。所以,它永遠不會清理你仍在使用的東西。 – jfriend00

相關問題