请向我解释一下,为什么我会0
代替5
?
内部HTML文件:
<script>
var x = 5;
</script>
<div id="dv"></div>
内部JS文件:
$(function () {
if(typeof x == 'undefined') {
var x = 0;
$("#dv").html(x);
} else if (x == 5) {
$("#dv").html(x);
}
});
我在这里缺少什么?
答案 0 :(得分:0)
由于variable hoisting in Javascript您的脚本是运行,就好像它是:
$(function () {
var x;
if(typeof x == 'undefined') {
x = 0;
$("#dv").html(x);
} else if (x == 5) {
$("#dv").html(x);
}
});
因此x
永远不会等于undefined
所以它永远不会将其设置为0
。请注意,函数中的变量x
是与页面中变量x
不同的变量。这是因为脚本中的变量是closed over进入函数范围。
如果我理解你的问题是正确的,我会这样做:
<body data-x="5">
...
<div id="dv"></div>
$(function () {
var x;
if(typeof $('body').data('x') !== 'undefined') {
$("#dv").html($('body').data('x'));
} else {
$("#dv").html(0);
}
});