日期:2014-05-16  浏览次数:20412 次

一个js变量问题
HTML code

<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啊,求解释?

------解决方案--------------------
你alert(a)的a其实指的是你在show中定义的a 此时还未赋值 所以是undefined
你虽然定义a时是在alert之后 但其实是类似于这样的
var a=1;
function show(){
var a;
alert(a);
a=2;
}
------解决方案--------------------
js的预编译导致函数内部变量a覆盖了外部变量,而在alert();语句执行时,变量a(内部)未定义,所以是undefined。