在Javascript中定义变量时使用var关键字
Using var keyword when defining a variable in Javascript
我在这里读到一些关于在定义新变量时使用var
关键字的帖子。这些帖子提到了如何在函数中使用var
创建具有局部作用域的变量,而不使用var
关键字创建具有全局作用域的变量。大多数帖子建议始终使用var
。我有几个问题:
-
我正在学习JS,我试图写一个脚本,计算次数一个按钮已被点击(见下面的代码)。如果在函数
totalClicks
的else
部分我使用var numclicks = 1;
,那么下面的代码不起作用。如果我省略var
关键字,它可以工作。这是因为代码工作numclicks
需要是一个全局变量,还是有其他原因?这是一个例外的规则,var
应该始终使用,或者有另一种方式来编程这个 -
第一次点击按钮,输出为
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
默认指向该元素
试试这个:
<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(){
var numClicks = document.getElementById("numclicks").value;
if (numclicks > 0) {
numclicks++;
}
else {
numclicks = 1;
}
document.getElementById("numclicks").innerHTML = numclicks;
}
</script>
</body>
</html>
-
当然,它必须是一个全局变量。
这是因为一旦到达
totalClicks()
函数的末尾,局部变量的作用域就会消失。 -
我不知道是什么原因造成的,但设置numclicks为0外面的功能应该有所帮助。设置窗口。Numclicks为0,并始终使用窗口。Numclicks,所以你总是可以看到哪个是一个全局变量。(全局作用域通常是非常实用的,尽管它在许多语言中经常被反对)
- 控制台返回var不是't定义,但它是
- 使用javascript中的var关键字创建块范围的变量
- 创建不带 var 关键字的全局变量时出现意外行为
- JavaScript 在函数之外使用 var 关键字
- 为什么在没有 var 关键字的情况下分配给变量时会出现引用错误
- Javascript Shadowing - 如果您尝试使用 VAR 关键字更改不存在的全局变量,则会产生效果
- Javascript:在“this”关键字之前有一个“var”关键字
- 忘记'时需要jshint错误;var'关键字
- 我的用户脚本没有'我不工作;我不知道为什么(过度使用var关键字)
- 在JS中,除了使用var关键字之外,还有其他方法来初始化变量吗?
- 在Javascript中定义变量时使用var关键字
- Var关键字和javascript函数'
- IE8获取对象预期错误-在var关键字声明XMLHttpRequest对象时发生
- Javascript:不使用var关键字时有两个输出
- 为什么JavaScript中的参数前面没有var关键字?
- 声明不带var关键字和逻辑OR的变量
- 在JavaScript中定义全局变量时省略var关键字
- 如果一个变量没有"var"函数内的关键字
- 在 ajax 请求中使用“var”关键字时非常奇怪的行为
- 为什么删除关键字而不删除带有var关键字的变量?