Javascript 在DOM中移动脚本标记时出现无法解释的行为?
我发现一些奇怪的行为试图复制其他东西,我觉得这很有趣 我的jsbin示例是 核心代码: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); });
<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
不是全局变量。