在jquery中更新全局变量

时间:2014-12-30 11:29:32

标签: javascript jquery

如何在jQuery中更新变量值?如何在函数更新时更新变量值?我在jQuery中检查了变量的范围,但我不明白。

<script>
$(document).ready(function(){
  var s = 9;
  function data()
  {
     var s = 11;
  }
  data();
  alert(s);
});
</script>

我希望11提醒数据,但我得到9.如果更新了函数,我该如何更新值。请帮帮我。

3 个答案:

答案 0 :(得分:2)

我认为你的意思是11而不是80,或者你可能没有正确解释它。

此处s是全局变量,您可以在data函数中修改其值。在var s函数中使用data时,它会创建一个新的变量名s,其范围仅限于该函数。这就是为什么你的范围超出范围的原因。

$(function(){
    var s = 9;
    function data()
    {
        s = 11; //removed var from here, if you use var here it will...
                //create new variable whose scope will end outside this function.
    }
    data();
    alert(s);
});

推荐阅读:

答案 1 :(得分:2)

首先,这不是关于jQuery的问题。代码中的“$(document).ready”...包装器与问题无关。

其次,就像我在评论中所说的那样,我假设你问题中的“70”和“80”是错误的,你的意思是说“9”和“11”。

要回答您的问题,您需要在var之前移除s = 11。这段代码应该做你想要的:

var s = 9;

function data()
{
   s = 11;
}

data();
alert(s);

当你添加“var”时,你告诉代码s应该只存在于当前函数(data)的范围内,并覆盖任何其他名为“s”的变量。外部范围。如果没有“var”,则两个s引用相同的变量。

我建议研究“Javascript中的范围”,并学习更多关于“var”和变量范围的工作原理。

答案 2 :(得分:0)

嗨,我不认为你可以从这个脚本中得到70警告。 并且我们无法通过这些值获得80警告,从这个脚本中你将获得警报框中的9,因为你将var s定义为两次,一个是全局的,另一个是私有的,当你要去警报然后脚本采取全局。你可以使用以下脚本在警报框中获得11:

<script>
$(document).ready(function(){
  var s = 9;
function data()
{
   s = 11;

}
data();
alert(s);
});
</script>