2014-03-13 89 views
-3

有沒有辦法清空所有變量或刪除其中的任何數據。旁邊寫Java腳本變量問題

Variable1=null;Variable2=null; 

...等等等等。請不要軟件。

這並不是說它佔用太多的內存,我只是希望它加載得很快。爲什麼我想要null這個變量是因爲我甚至不想要任何錯誤。代碼如下所示:

var First_variable; 
for (var I_am_a_loop=0;I_am_a_loop<10;--I_am_a_loop){ 
    First_variable=prompt("What is your name."); 
} 

現在,這是正義的,但它會有數組並且更先進。爲什麼我想要將變量歸零是因爲我不想犯錯誤。我沒有完整的腳本,所以我不能給你一個完整的例子。

+2

你有什麼具體問題?網站是否佔用太多內存?你有沒有證據表明這些變量以某種方式損害了性能?請提供更多詳細信息 –

+0

如果您可以顯示一些當前的代碼,我們可以提供關於如何清理它的建議。然而,沒有任何代碼與我們提議的解決方案一起工作可能不適用於您的情況。 – scunliffe

+0

看看這個指南:http://stackoverflow.com/questions/how-to-ask –

回答

1

如果您要重新分配循環中的變量,將它們設置爲null幾毫秒不會真的爲您解決任何問題。

即使您確實在循環*內聲明瞭它們,現代JavaScript垃圾收集器也不應該在擺脫未引用的變量時遇到任何困難。唯一的一次你會期望這裏有一個問題是循環引用(所以變量總是有一個引用)或非常快速的創建大量的大對象,這會導致大量的垃圾處理。

  • 如果使用var他們被提升到函數的頂部,如果使用let他們將有塊範圍(ECMAScript中僅6)。

關於你的評論:

它不是其採取的內存。這是我想它,以確保它不會弄亂反正

可能我是第一個引用唐納德Knuth ...

程序員浪費大量的時間思考或擔心的非關鍵部分的速度eir程序,並且在考慮調試和維護時,效率方面的這些嘗試實際上會產生強烈的負面影響。我們應該忘記小效率,大約97%的時間:過早優化是所有邪惡的根源。但我們不應該在這個關鍵的3%中放棄我們的機會。

我建議您測量並採取任何行動,直到您有一個需要它的測量。編寫代碼以便可讀,默認情況下效率不高。

代碼

根據您加入,我會做一些意見的代碼......你似乎是遞減循環變量,所以它會永遠提示。你可以做到這一點,如果你想,但它更容易,只需使用while(true) {}循環來明確你想要做到這一點。否則,如果您真的打算循環10次,請改爲增加循環變量。

var First_variable; 
for (var I_am_a_loop = 0; I_am_a_loop < 10; I_am_a_loop++) { 
    First_variable=prompt("What is your name."); 
} 

即使用戶輸入什麼的First_variable值將被覆蓋。當他們沒有輸入數值時,您可以隨時提供默認值:

var First_variable; 
for (var I_am_a_loop = 0; I_am_a_loop < 10; I_am_a_loop++) { 
    First_variable = prompt("What is your name.") || 'Default Name'; 

    alert(First_variable); 
} 
+0

Javascript何時開始具有塊範圍? (修辭問題) –

+0

ES6,帶'let'關鍵字。 – Fenton

+1

我很少假設ES6 /和諧,除非人們指定它,但公平點。 –

0

似乎是一個奇怪的問題,但要回答。您可以將相關代碼封裝在一個函數中,並依靠javascript的函數級別範圍來爲每個函數調用提供新的實例。

您可能可以重構代碼,以便使用對象或數組代替直接變量。

你可以一定程度上被一個鏈式賦值語句縮短你的示例代碼,如:

variable1 = variable2 = null; // saves you a bunch of '=null;' if nothing else 

我總的想法是,如果你有少於10個變量,你需要重新設置,這是一個輕微的投訴。如果需要重置的變量超過10個,則可能需要查看代碼。