JavaScript全局变量在功能中不起作用

时间:2018-06-26 11:28:32

标签: javascript

我的JavaScript全局变量似乎不起作用,给出NaN作为响应而不是期望的效果。 我正在尝试做的是使“ var value = 0”从0开始,并且每0.5秒将其加1,希望您可以在这里看到我所做的事情。

var value = 0;
setInterval(move,500);
function move() {
    var value = value+1
    console.log(value);
    $(".html5").attr("value",value);
}

4 个答案:

答案 0 :(得分:2)

删除功能中的变量重新减速。您可以使用这个。

  var value = 0;
  setInterval(move,500);
  function move() {
    value = value+1
    console.log(value);
    $(".html5").attr("value",value);
  }

答案 1 :(得分:1)

您之所以得到NaN,是因为

var value = value+1的评估为

var value;
value = undefined + 1;
value = NaN;

要解决此问题,请停止在函数内再次声明value

var value = 0;
setInterval(move,500);
function move() {
    value = value+1
    console.log(value);
    $(".html5").attr("value",value);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="html5"/>

答案 2 :(得分:0)

摆脱var中的function,它在function scope中创建另一个变量,该语句将按以下方式解释;

var value;
value = value + 1;

由于valueundefined,因此undefined + 1的值为NaN

var value = 0;
setInterval(move,500);
function move() {
    value = value+1
    console.log(value);
    //$(".html5").attr("value",value);
}

答案 3 :(得分:0)

var value = value+1中的行move声明了一个名为value的新变量,value+1引用了该变量。删除var,它将使用全局值:

var value = 0;
setInterval(move,500);
function move() {
    value = value+1
    console.log(value);
    $(".html5").attr("value",value);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="html5">