Javascript 在DOM中移动脚本标记时出现无法解释的行为?

Javascript 在DOM中移动脚本标记时出现无法解释的行为?,javascript,jquery,dom,Javascript,Jquery,Dom,我发现一些奇怪的行为试图复制其他东西,我觉得这很有趣 我的jsbin示例是 核心代码: <div id="diag"> <script type="text/javascript"> $(document).ready(function(){ if(x==undefined){ var x=1; }else{ x=x+1; } alert(x); });

我发现一些奇怪的行为试图复制其他东西,我觉得这很有趣

我的jsbin示例是

核心代码:

  <div id="diag">
    <script type="text/javascript">
      $(document).ready(function(){
      if(x==undefined){
        var x=1;
      }else{
        x=x+1;
      }
      alert(x);
      });
    </script>
  </div>
$.dialog
我知道将在DOM中移动此脚本,因此预计将执行两次。然而,结果与我预期的不同


我希望它会说1,然后是2。然而,它说的是1,然后又是1。这怎么可能呢?这种行为在Firefox5、Chrome和IE8中是一致的。x的作用域在该函数中,在第二次调用时被重新定义。“x”变量的作用域是if语句的块。这意味着x在此处定义为:

var x;
$(document).ready(function(){

    if(x==undefined)
        x=1;
    else
        x=x+1;

    alert(x);
});
var x=1;
}else{
然后被销毁并返回到此处未定义:

var x=1;
}else{
您要做的是确保在更大的范围内定义x

<script type="text/javascript">
  var x = 1;
  $(document).ready(function(){
    if(x == undefined){
      x = 1;
    } else {
      x = x + 1;
    }
    alert(x);
  });
</script>

var x=1;
$(文档).ready(函数(){
如果(x==未定义){
x=1;
}否则{
x=x+1;
}
警报(x);
});

x
不是全局变量。