我发现了一些奇怪的行为,试图重现其他东西,我觉得它很有趣。
我的jsbin示例是here
核心代码:
<div id="diag">
<script type="text/javascript">
$(document).ready(function(){
if(x==undefined){
var x=1;
}else{
x=x+1;
}
alert(x);
});
</script>
</div>
(在页面底部)
$(document).ready(function(){
$('#diag').dialog();
});
$.dialog
我知道会在DOM中移动这个脚本,因此预计会执行两次。但是,结果与我预期的不同。
我期望它说1然后2.然而,它再说1然后再说1。这怎么可能呢?这种行为在Firefox5,Chrome和IE8中是一致的
答案 0 :(得分:0)
x的范围在该函数内部,在第二次调用时重新定义
答案 1 :(得分:0)
var x;
$(document).ready(function(){
if(x==undefined)
x=1;
else
x=x+1;
alert(x);
});
答案 2 :(得分:0)
“x”变量的范围是if语句的块。这意味着x在此处定义:
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>