如何设置“var count”以便第一次初始化然后递增?

时间:2011-11-12 18:38:26

标签: javascript

我尝试了this

var count;

function testCount ()
{
  if (count)
  {
    alert("count is: " + count);
    count++;
  }    
  else
  {    
    alert("count is: " + count);
    var count = 0;
  }
};

testCount();

但它始终给出“未定义”,并且当我在jsfiddle中再次运行时,count的值不会更新。

4 个答案:

答案 0 :(得分:2)

只需在声明中初始化它:

var count = 0;

并且不要在count中声明第二个else。这是一个完全独立的变量。

代码中的问题是count块中的else与您在全局范围内声明的块中的var count = 0;不同。发生这种情况是因为您使用else子句中的count定义了一个具有相同名称的新变量,该变量不会引用在函数外部声明的var变量。

如果您使用else移除var count; function testCount () { if (count) { alert("count is: " + count); count++; } else { alert("count is: " + count); count = 0; } }; testCount(); ,事情会按预期运作:

testCount

但是,如果您再次致电iffalse将评估为0,因为{{1}}是Javascript中的“falsey”值。

答案 1 :(得分:1)

假设你不能

var count = 0;

您可以使用

检测其缺少指定值
if (typeof count === 'undefined')
   count = 0;

答案 2 :(得分:1)

似乎没有人展示简单的testCount()实现。只需在声明时初始化它,然后在函数中使用它:

var count = 0;

function testCount ()
{
    alert("count is: " + count);
    count++;
}

testCount();

答案 3 :(得分:1)

这是一个可变范围的问题。

当在函数外部定义变量时,此变量是全局变量。换句话说,当你这样做时:

var count;

你宣布计数,你可以在任何地方使用它。

现在,在一个函数中,当你声明count如下:

function testCount ()
{
    ...
    alert("count is: " + count);
    var count = 0;
    ...
};

你声明一个新的变量,其范围在函数中,并用0初始化。但是,你想要的是改变全局变量值。所以,就这样做:

function testCount ()
{
    ...
    alert("count is: " + count);
    count = 0;
    ...
};

请注意,我已删除 var 关键字。

现在,为了简化整个程序,我建议你:

var count = 0;

function testCount ()
{
    alert("count is: " + count);
    count++;
};
  • 使用声明
  • 进行初始化
  • 所以你不必担心testCount中的初始化
  • 您的代码更轻盈