<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" charset="UTF-8">
/**
* 每个执行环境都关联一个变量对象,环境中定义的所有变量和方法都会包含在这个对象中
* 我们的代码无法访问这个对象,但是后台会解析它
*/
var color1 = 'red'; // 全局产生一个执行环境同时(产生一个对象,包含这些属性和方法)
function showColor1(){ // 每个函数都会产生一个执行环境,(产生一个对象,包含这些属性和方法)
console.log(color1);
var color2 =color1;
function showColor2(){ //同样会产生一个执行环境
console.log(color2);
var color3=color2;
console.log(color3);
}
showColor2();
}
showColor1();
/**
* 多个变量对象就会产生一个作用域链:对有权访问的对象和函数进行有序访问 (下级可以访问上级,一直上级没有,追溯到上上级中寻找,,上级不能访问下级)
*
* 上面代码为例: showColor1()函数中的 color2 可以访问到全局执行环境中的color1
* showColor2()函数中的color3可以访问 color1和color2;
* 但是你在不能再showColor1()这个执行环境中将color2=color3(不能从作用域链的上级访问下级)
*
*/
</script>
</head>
<body>
</body>
</html>
javascript中的执行环境和作用域链
最新推荐文章于 2022-03-13 23:26:19 发布