在Javascript中定义变量时使用var关键字

Using var keyword when defining a variable in Javascript

本文关键字:var 关键字 变量 Javascript 定义      更新时间:2023-09-26

我在这里读到一些关于在定义新变量时使用var关键字的帖子。这些帖子提到了如何在函数中使用var创建具有局部作用域的变量,而不使用var关键字创建具有全局作用域的变量。大多数帖子建议始终使用var。我有几个问题:

  1. 我正在学习JS,我试图写一个脚本,计算次数一个按钮已被点击(见下面的代码)。如果在函数totalClickselse部分我使用var numclicks = 1;,那么下面的代码不起作用。如果我省略var关键字,它可以工作。这是因为代码工作numclicks需要是一个全局变量,还是有其他原因?这是一个例外的规则,var应该始终使用,或者有另一种方式来编程这个

  2. 第一次点击按钮,输出为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
  1. 第一次定义numclicks时,它需要在任何函数之外,因此它成为全局的。在函数中定义变量时使用var并不会使其成为全局变量。在函数内部对全局变量使用var将使其成为局部变量。

  2. 你有一个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>
  1. 当然,它必须是一个全局变量。

    这是因为一旦到达totalClicks()函数的末尾,局部变量的作用域就会消失。

  2. 我不知道是什么原因造成的,但设置numclicks为0外面的功能应该有所帮助。设置窗口。Numclicks为0,并始终使用窗口。Numclicks,所以你总是可以看到哪个是一个全局变量。(全局作用域通常是非常实用的,尽管它在许多语言中经常被反对)