分享人:韩筠宜
目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
作用域与作用域链是JS中非常重要的概念之一
学习作用域与作用域链对于深入了解JS的运行机制是一个很大的帮助。
执行环境决定了变量对象的行为。
全局执行环境被认为是window对象
每个函数都有自己的执行环境
执行流=>函数=>(函数的环境)=>环境栈=>环境栈将函数环境弹出=>函数
当执行环境的所有代码执行完毕,该环境被销毁。
全局执行环境只有关闭网页或浏览器时才会被销毁。
代码在环境中执行,会创建变量对象的一个作用域链。
它的存在是为了让变量对象中的所有变量和函数有序的执行
沿着作用域链一级一级的搜索标识符的过程。
让我们用代码来形象演示一下上述的过程
var color = "blue";
function changeColor(){
if(color === "blue"){
color = "red";
}else{
color = "blue";
}
}
changeColor();
alert("Colors is now" + color);
var color = "blue";
function changColor(){
var anotherColor = "red";
function swapColor(){
var template = anotherColor;
anotherColor = color;
color = template;
}
swapColor()
}
changColor()
某些语句可以在作用域前端临时增加一个变量对象,在代码执行后会被移除
with语句
将指定的对象添加到作用域中
try-catch语句中的catch块
会创建一个新的变量对象
for(var i = 0; i < 10; i++){
daSomething(i);
}
alert(i); //10
var 声明的变量会自动被添加到最接近的环境中
function add(){
var sun = 10;
return sun;
}
alert(sun)
var color = "blue";
function getColor(){
return color;
}
alert(getColor());
javaScript高级程序设计
了解闭包的机制
感谢大家观看
BY : 徐浩程 | 韩筠宜