核心提示:执行环境和作用域,链垃圾回收和块级作用域实例讲解!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>