看板 Ajax 關於我們 聯絡資訊
※ 引述《hirabbitt (兔子)》之銘言: : 例如 : function f1(){ : var test; : var test;//再var一次 : } : IE給過了 : 我知道js的變數可以不宣告 : 它會在最外層自動幫你宣告一個 : 但是如果是重覆宣告 : 在js內部會發生什麼事嗎? : 謝謝 嚴謹的程式語言是不能重覆宣告的 不過javascript可以 要知道結果 測一下就知道了 var x = 1; alert(x);//1 var x = 2; alert(x);//2 只是我還想知道物件、記憶體配置發生了什麼變化,於是我試圖寫段code來了解, http://www.jsfiddle.net/RmWty/,但還是不知道過程的變化。 原題: var x = 1; var x = 2; 雖然不確定發生了什麼事,但應該有以下的可能。 一、新的直接蓋掉舊的,也就是等於 var x = 1; // memory 1000 x = 2; // memory 1000 二、舊的馬上被移除(或稍後被garbage collection),留下新的 var x = 1; // memory 1000 x = null; // memory 1000 free var x = 2; // memory 2000 三、舊的、新的都在,也就是舊的還有被其他東西reference到 (可是我想不出例子), 只是 x 指向新的, var x = 1; // memory 1000 var x = 2; // memory 2000 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.30.198
dlikeayu:所以是2、3的話就是被吃掉幾位元的記憶體了... 11/08 15:16
dlikeayu:變數為陣列的話 這情形就不太理想了 11/08 15:17
hirabbitt:對啊0.0> 11/08 17:21