变量在javascript中的if语句中丢失值

时间:2014-10-13 13:00:47

标签: javascript jquery

我将这个简单的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的新值,尽管我之前已对其进行了定义。这一直让我疯狂了一段时间。上面的代码有问题吗?

2 个答案:

答案 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)为真,因此输出为零。