我在这里阅读了一些关于在定义新变量时使用 var
关键字的文章。这些帖子提到如何在函数中使用 var
创建具有局部范围的变量,而不使用 var
关键字创建具有全局范围的变量。大多数帖子建议始终使用 var
。我有几个问题:
我正在学习 JS,我正在尝试编写一个脚本来计算按钮被点击的次数(请参阅下面的代码)。如果在函数
totalClicks
的else
部分我使用var numclicks = 1;
那么下面的代码就不起作用了。如果我省略var
关键字,它就可以工作。这是因为要使代码正常工作,numclicks
需要是一个全局变量,还是有其他原因?这是应始终使用var
规则的异常(exception)情况,还是有另一种编程方式。第一次点击按钮时,输出为
NaN
。我不清楚为什么它不是 1?按照代码的逻辑,变量似乎在写入文档之前设置为 1。我知道如果我在函数语句之前添加numclick = 0;
,这个问题就会得到解决。但我不清楚为什么这样可以解决问题。
非常感谢您的帮助。
代码
<html>
<head>
<title>Count number of clicks</title>
</head>
<body>
<form>
<input type="button" value="click here" onclick="totalClicks();">
</form>
Total clicks: <span id="numclicks"></span>
<script type="text/javascript">
function totalClicks(){
if (window.numclicks) {
numclicks++;
}
else {
numclicks = 1;
}
document.getElementById("numclicks").innerHTML = numclicks;
}
</script>
</body>
</html
最佳答案
第一次定义
numclicks
时,它需要在任何函数之外,这样它才能成为全局的。使用var
同时仍在函数内定义变量不会使其成为全局变量。在函数内对全局变量使用 var 会使它成为局部变量。您有一个 ID 为
numclicks
的元素,因此window.numclicks
默认指向该元素。
关于javascript - 在 Javascript 中定义变量时使用 var 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8548468/