我将这个简单的HTML布局作为测试页面:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript">
</script>
<script>var user = 'test';</script>
<script>
$(document).ready(function () {
if(!user) {
var user = '0';
}
alert(user);
});
</script>
</head>
</html>
出于某种原因,使用if条件检查!user
的值时,条件成功,变量user
获得0
的新值,尽管我之前已对其进行了定义。这一直让我疯狂了一段时间。上面的代码有问题吗?
答案 0 :(得分:4)
您已重新声明&#34;用户&#34;作为函数中的局部变量。函数中的变量定义始终被视为在函数的最开始出现,这意味着您的代码等同于
$(document).ready(function () {
var user;
if(!user) {
user = '0';
}
alert(user);
});
在if
语句中,&#34; user&#34;的值将是undefined
。 !user
测试成功,因此您的代码会将变量设置为'0'
。
答案 1 :(得分:1)
当DOM加载变量时,'user'未定义。并且在JavaScript中(!undefined)为真,因此输出为零。