2011-08-28 80 views
1

我試圖每次調用d時都重複添加10次。它每次保持20次,爲什麼?爲什麼我不能在一個函數內連續增加一個變量?

function d() { 
    var c = [10]; 
    c[0] += 10; 
    alert(c[0]); // always 20 
} 
d(); d(); d(); // supposed to be 20, 30, 40... 
+0

閱讀有關[可變範圍(https://developer.mozilla.org/en/JavaScript/Guide/Values %2c_Variables%2c_and_Literals#Variable_Scope)。 –

回答

13

您每次調用該函數時都會創建一個新數組並將其分配給c。重置它。

移動賦值使其位於函數之外(所以它只運行一次)。

var c = [10]; 
function d() { 
    c[0] += 10; 
    alert(c[0]); 
} 
d(); d(); d(); // will be 20, 30, 40... 

但全局是錯誤的良好來源,因此它被認爲是良好的作風來包裝這樣的事情在關閉的使用全局變量的減少。

var d =(function() { 
    var c = [10]; 
    function d() { 
     c[0] += 10; 
     alert(c[0]); 
    }; 
    return d; 
})(); 
d(); d(); d(); 
+1

昆汀 - 你可以輸入非常快! –

0

你有什麼是局部變量。每次調用該函數時,它都被初始化爲10。

嘗試使用全局變量作爲

var c = [10]; 
function d() { c[0] += 10; alert(c[0]); // always 20 } 
0

爲什麼不

var c = 10; 
function d(){ 
    c+=10; 
    alert(c); 
} 
d();d();d(); 
相關問題