我尝试了this:
var count;
function testCount ()
{
if (count)
{
alert("count is: " + count);
count++;
}
else
{
alert("count is: " + count);
var count = 0;
}
};
testCount();
但它始终给出“未定义”,并且当我在jsfiddle中再次运行时,count的值不会更新。
答案 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
但是,如果您再次致电if
,false
将评估为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++;
};