您现在的位置:首页 >> 前端 >> 内容

执行环境和作用域,链垃圾回收和块级作用域实例讲解

时间:2018/4/26 13:55:04 点击:

  核心提示:执行环境和作用域,链垃圾回收和块级作用域实例讲解!DOCTYPE htmlhtmlheadtitle执行环境和作用域链 垃圾回收和块级作用域/titlescript type=text/// 执行环境...

执行环境和作用域,链垃圾回收和块级作用域实例讲解

<!DOCTYPE html>
<html>
<head>
    <title>执行环境和作用域链 垃圾回收和块级作用域</title>
    <script type="text/javascript">
        
    // 执行环境和作用域链


    // 1 执行环境定义了变量或者函数有权访问的其他数据,决定了他们各自的行为,每一个执行环境都有一个与之相关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中
    // 2 全局执行环境是最外围的一个执行环境,根据ECMAScript实现所在的宿主环境不同,表示执行环境的对象也不同
    // 3 每一个函数都有自己的执行环境
    // 4 当执行环境流入函数时,产生作用域链的概念,环境变量可以一层一层向上追溯,可以访问他的上级环境(变量和函数)


    // 垃圾回收和块级作用域


    // 离开作用域的值将被自动标记为可以回收,因此在垃圾收集期间被删除
    // 垃圾收集方法 1 标记方法 2 引用计数法
/*    function test() {
        var a = 10; // 已使用
        var b = 10; // 已使用
    }


    test(); // 执行完毕后,a,b又被标记了一次:没有被使用*/


    // 块级作用域的概念 在java for if语句中都有
    // js中没有块级作用域的概念
    function test() {
        for (var i = 0; i<5; i++) {
            alert(i); 
        }
        alert(i);
    }


    test();// 0,1,2,3,4,5


    // 如果要实现垃圾回收


    function test() {
        (function() {
            for (var i = 0; i<5; i++) {
                alert(i); 
            }
        })();
        alert(i);
    }


    test(); // 0,1,2,3,4,没有了




    </script>
</head>
<body>


</body>
</html>

作者:网络 来源:evebear201