2011-08-28 99 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(); 
相关问题