作用域,作用域链

作用域:

作用域就是一个独立的地盘,让变量不会外泄、暴露出去。也就是说作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。

简单举个例子说明一下:

	//域1
	function foo(a){
	//域2
		var b = a * 2;
		function bar(c){
		//域3
			console.log(a,b,c);
		//域3
		}
		bar(b * 3);
	//域2
}
foo(2);//2,4,12
//域1

最后输出的结果为 2, 4, 12

域1  是全局作用域,有标识符 foo;
域2  是作用域 foo,有标识符 a,bar,b;
域3  是作用域 bar,仅有标识符 c。
作用域链:

什么是作用域链:
如果父级也没呢?再一层一层向上寻找,直到找到全局作用域还是没找到,就宣布放弃。这种一层一层的关系,就是 作用域链 。
简单举个例子说明一下:

var a = 10;
		function fn(){
			var b = 10
			function fun1(){
				console.log(c);//undefined
				b += 5;
				var c = 20;//此处给c赋值
			}
			console.log(b);//10
			fun1();
			console.log(b);//15

		}
		fn();

此例子共有3层
第一层:
Window Go{
a:10;
fn:
}
第二层:
fn Ao{
b:10;//在第三层是b值变为15
fun1:
}
第三层:
fun1 Ao{
c:20;
}
在第三层我们没发现b声明,所以我们需要往上层查找,应此我们在第三层对b的值进行更改时,第二层b的值将发生变化;如果这里第一层,第二层都有b,找到的b还是第二层,因为第三层的上一层是第二层,一旦在第二层找到将停止查找,就不会去第一层查找;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值