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


