03-全局变量的细节问题

2016-07-27  本文已影响3人  Young_Blood
<!DOCTYPE html>
<html lang="en">
 <head> 
  <meta charset="UTF-8" /> 
  <title>Title</title> 
 </head> 
 <body> 
  <script type="text/javascript">

        // 在全局作用域当中 带var 和 不带 var的关系
        // 区别: 带var的可以进行预解释,所以在赋值的前边执行不会报错;
        //      不带var的不能预解释,在前边执行会报错

//        console.log(num); // undefined
//        var num = 12;
//
//        console.log(num2); // num2 is not defined (当前的变量不存在) 报错
//        num2 = 12;

        // 关系:num2 = 12 -> 相当于给Window增加了一个叫做num2的属性名,属性值是12
        //     var num2 = 12 ->首先相当于给全局作用域增加了一个全局变量num,不仅如此他也相当于给Window增加了一个属性名num2,属性值为12
//        var num = 12;
//        console.log(num); // 12
//
//        num2 = 12;
//        console.log(num2); // 12 window.num2

//        var total = 0;
//        function fn() {
//            console.log(total); // undefined
//            var total = 100;
//        }
//        fu();
//        console.log(total); // 0


//        var total = 0;
//        function fn() {
//            console.log(total); // 0
//            total = 100;
//        }
//        fu();
//        console.log(total); // 100

        // 私有作用域中出现的一个变量不是私有的,则望上级作用域中进行查找,上级没有则继续向上查找,一直找到window,如果Window下也没有?
        // 我们是获取值 : console.log(total) 报错了
        // 我们是设置值 : total = 100; -> 相当于给Window增加了一个属性名total 属性值为100
        function fn() {
            console.log(total); // total is not undefined
            total = 100;
        }
        fu();
        console.log(total); // 100
        // JS中如果不进行任何特殊处理情况下 上边的代码报错,下边的代码都不在执行
    </script>  
 </body>
</html>
上一篇下一篇

猜你喜欢

热点阅读