JavaScript的变量作用域

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        //局部变量的优先级大于全部变量的优先级,当js引擎在当前作用域找不到此变量时,就会在外围的作用域找
        //js在预编译阶段,它是以函数来划分作用域的,然后逐层为其以var显示声明的变量和定义式函数开辟内存空间,然后在对显示声明的变量进行特殊处理,通通赋初始值为undefined

        var a = 100;

        function testResult() {
            var b = 2 * a;//预编译时,此时存在变量a,但a还未赋值,值为undefined,相当于var a;
            var a=200;
            //a = 200; //不会对a进行预编译,当执行var b = 2 * a;时,在函数中为找到变量a,所以会在外围找,此时找到a=100,结果b=200;
            var c = a / 2;
            alert(b);//NaN
            alert(c);//100
        }
        testResult(); 
    </script>
</head>
<body>

</body>
</html>

 

posted @ 2013-07-30 14:02  小小一书童  阅读(226)  评论(0编辑  收藏  举报