<html>
<head>
<script type="text/javascript">
var a=1;
function show(){
alert(a);
var a=2;
}
</script>
</head>
<body>
<div onclick="show()">dddd</div>
</body>
</html>为什么调用show会显示undefine啊,求解释?

解决方案 »

  1.   

    你alert(a)的a其实指的是你在show中定义的a  此时还未赋值  所以是undefined
    你虽然定义a时是在alert之后 但其实是类似于这样的
                var a=1;
                function show(){
                   var a;
                    alert(a);
                    a=2;
                }
      

  2.   

    js的预编译导致函数内部变量a覆盖了外部变量,而在alert();语句执行时,变量a(内部)未定义,所以是undefined。