2011-03-15 20 views
2
<!-- Add-in device.js files are placed here --> 
    <div id="deviceScript"></div> 

我一直在做的時候我選擇一個新的(附加)設備,並追加其的.src文件的腳本標籤被清除了這一點。除去外部JS文件後會發生什麼

我有一些模糊的想法,解開外部js文件可能會從內存中刪除它的代碼。如果沒有,有沒有辦法做到這一點?

不同腳本文件中的函數具有相同的名稱 - 例如,我使用start()來設置每個設備。似乎最新的設備啓動()會覆蓋內存中的一個 - 但我不確定覆蓋是否意味着刪除最後一個設備,或者是否有可怕的糟粕堆積。

任何澄清讚賞。

回答

0

如果您刪除了javascript文件並且網頁已經加載,代碼仍然在內存中(至少瀏覽器可以訪問它),因此您仍然可以「使用」它。如果您重新加載/刷新頁面,代碼將無法訪問,因此您將無法使用它。我認爲沒有辦法從內存中刪除這些代碼(或者從目前爲止瀏覽器可以訪問的任何地方)。

如果您希望在某個頁面中使用它們,那麼在幾個js文件中編寫相同名稱的函數並不是一個好習慣。在上一個js中定義的函數將被使用,所以如果你調用這個函數兩次(在你的情況下是start()),你的函數()會做同樣的事情。

如果將相同的名稱寫入同一個js上的兩個函數,它的工作原理與此類似。在使用其他語言時,您可能會將myfunc(oneparm)和myfunc(parmone,parmtwo)作爲兩個獨立的函數,並根據傳遞的參數數量運行,在JavaScript中,定義的最後一個函數始終是一次運行,而不管參數的數量。

記住JavaScript是一種客戶端腳本語言

+0

第2段 - 我用一個函數打開已傳遞文件名的每個設備(外部js。)。如果start()在每個設備文件中,我可以爲所有設備調用start。每次啓動都會執行一些配置類型的事情,然後調用它自己的「內部」功能 – 2011-03-16 02:06:02

+0

第1段 - 是的,我可以重新加載頁面 - 這是一個很好的觀點。 Para 3這是個好消息。謝謝 – 2011-03-16 02:10:32

0

這就是我認爲可能是一個答案,但也許真的是另外一個問題 - 這是合乎邏輯的?

上下文:訪問者選擇一個命名對象來顯示一組鍵(比如說一個是Color)。選擇一個鍵會顯示一個或多個設備名稱(比如setColor)。選擇設備名稱會顯示一組選項(如紅色,綠色,藍色)。

在第二步中,我將先前的device.js換成新的device.js。在選擇該選項之前,js有時間加載以調用其中的功能來執行該操作。

因此,如果任何函數名稱與以前一樣重複,則由於交換操作而覆蓋它們。這意味着我不必擔心命名約定,除了主函數的名稱與設備名稱相同之外......任何人都可以製作設備。也許這是一個好主意,重新加載每一次。

有什麼想法?謝謝