我不知道它是否可以安全使用讓這樣的情景:使用let作爲返回結果的變量是否安全?
function test() {
let result = 0;
result++;
return result;
}
我不知道它是否可以安全使用讓這樣的情景:使用let作爲返回結果的變量是否安全?
function test() {
let result = 0;
result++;
return result;
}
是的,它是完全安全的,它是聲明局部變量的預期方式,您稍後想要返回該函數的值。由於JavaScript是垃圾收集語言,本地變量可以安全地包含任何類型的值。它可以有一個簡單的原始的像你這樣的表現,或者甚至可以包含這樣的對象:
function test() {
let result = {cnt: 0};
result.cnt++;
return result;
}
let obj = test();
console.log(obj); // shows {cnt: 1}
,因爲雖然你是返回這是的範圍內聲明的對象這是安全的當函數返回時,函數和函數作用域將超出作用域,因爲Javascript是一種垃圾收集語言,對象將在函數作用域之外的函數返回值分配的任何位置單獨生存。
謝謝你的回答。稍後gc會收集它,並使obj變得不明確? – longlifelearner
@longlifelearner - GC只會清理不再使用的東西。因此,如果您已將obj分配給您的代碼仍可訪問的變量,那麼它將不會被GCed。 GC就是這樣工作的。它清除任何代碼無法訪問的內容。所以,它永遠不會清理你仍在使用的東西。 – jfriend00
上捎帶上面發佈的評論。
Const - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const是讓自己以及其他正在閱讀您的代碼的人知道'這個變量不會被重新分配或修改'的好方法。
讓 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let讓人們知道這個變量很可能會被重新分配或修改。
在你的情況下使用是完全可以的!
爲什麼它不安全? – Li357
它不會安全的瀏覽器,不明白'let' ...看着你,互聯網爆炸...否則,它是完全好 –
http://stackoverflow.com/questions/762011/ – david25272