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

时间:2011-12-17 22:43:28

标签: javascript html

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

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

  2. 第一次单击该按钮时,输出为var。我不清楚为什么它不是1?遵循代码的逻辑,在将变量写入文档之前,该变量似乎设置为1。我知道如果我在函数语句之前添加NaN,这个问题就会得到解决。但我不清楚为什么这样才能解决问题。

  3. 非常感谢你的帮助。

    CODE

    numclick = 0;

3 个答案:

答案 0 :(得分:2)

  1. 第一次定义numclicks时,它需要在任何函数之外,因此它变为全局函数。在函数内定义变量时使用var不会使其成为全局变量。在函数内部对全局变量使用var将使其成为局部变量。

  2. 您有一个ID为numclicks的元素,因此默认情况下window.numclicks指向该元素。

答案 1 :(得分: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(){
            var numClicks = document.getElementById("numclicks").value;

            if (numclicks > 0) {
                numclicks++;
            }
            else {
                numclicks = 1;
            }

            document.getElementById("numclicks").innerHTML = numclicks;

        }
    </script>

</body>
</html>

答案 2 :(得分:0)

  1. 当然它需要是一个全局变量。

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

  2. 我不知道是什么原因造成的,但将numclicks设置为0 OUTSIDE该功能应该有帮助。将window.numclicks设置为0并始终使用window.numclicks,这样您就可以随时查看哪个是全局变量。 (全球范围通常非常实用,即使它在许多语言中经常被不赞成)