JavaScript的作用域问题

执行环境及作用域

执行环境

定义了变量或函数有权访问的其他数据,决定了它们各自的行为。简单来说,就是决定了一个变量或函数能够访问到的其他变量或函数有哪些。

每个执行函数都有一个变量对象,环境中定义的所有变量和函数都保存在这个对象中。

每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被push进一个 环境栈,执行完后再弹出。

作用域

作用域链:保证对执行环境有权访问的所有变量和函数的有权访问。简单理解,就是类似一个链表将当前访问的变量或函数和与之关联能够访问的执行环境串起来,当需要寻找当前环境之外的变量或函数时通过作用域链一环一环去查找。

注意:作用域链的前端指向自身的变量对象,后端指向外部环境。即:当调用一个执行环境中的变量时,首先去该环境的自身查找该变量,没有的话再去查找该环境的父一级。

//全局环境只能访问color、changeColor()
var color = 'blue';

//changeColor()不能访问swapColors()中的变量和函数
function changeColor(){
	var anotherColor = 'red';
	
	//swapColors()能够访问该代码片段的所有变量和函数
	function swapColors(){
		var tempColor = anotherColor;
		anotherColor = color;
		color = tempColor;
	}
	swapColors();
}
changeColor();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值