作者tomin (蓝蓝紫黄橘 粉灰白绿咖)
看板Ajax
标题Re: [问题] javascript 同一变数在同一函式下再宣告
时间Mon Nov 8 14:17:53 2010
※ 引述《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
1F:→ dlikeayu:所以是2、3的话就是被吃掉几位元的记忆体了... 11/08 15:16
2F:→ dlikeayu:变数为阵列的话 这情形就不太理想了 11/08 15:17
3F:→ hirabbitt:对啊0.0> 11/08 17:21