Re: [問題] javascript 同一變數在同一函式下再宣告

看板Ajax作者 (藍藍紫黃橘 粉灰白綠咖)時間13年前 (2010/11/08 14:17), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

11/08 15:16, , 1F
所以是2、3的話就是被吃掉幾位元的記憶體了...
11/08 15:16, 1F

11/08 15:17, , 2F
變數為陣列的話 這情形就不太理想了
11/08 15:17, 2F

11/08 17:21, , 3F
對啊0.0>
11/08 17:21, 3F
文章代碼(AID): #1CrvOJ9G (Ajax)
文章代碼(AID): #1CrvOJ9G (Ajax)