JavaScript函数全局作用域

[[scope]]:每个javascript函数都是一个对象,对象中有些属性我们可以访问,但有些不可以,这些属性仅供javascript引擎存取,[[scope]]就是其中一个。[[scope]]指的就是我们所说的作用域,其中存储了运行期上下文的集合。即作用域决定了代码区块中变量和其他资源的可见性。

全局作用域:全局作用域贯穿整个javascript文档,在所有函数声明或者大括号之外定义的变量,都在全局作用域里。一旦你声明了一个全局变量,那么你在任何地方都可以使用它,包括函数内部。

		var num = 10;
		test(1);
		var test = 123;
		console.log(test);//123
		console.log(num);//11
		console.log(global);//undefined
		var global = 100;
		function fn(){
			console.log(global);//100
			global = 200;
		}
		console.log(global);//100
		fn();
		var fn;
		console.log(global);//200
		fn = 10;
		console.log(fn);//10

//1  GO{}创建GO作用域进行预编译
//2  GO{
//查找GO里面用var关键字和函数创建的变量
//	global : undefiend,
//	fn : undefiend,
//}
//3 GO{
//将实参值和形参统一
//	global : undefiend,
//	fn : undefiend,
//}
//4 GO{
//在函数中找函数声明,值赋予函数体
//	global : undefiend,
//	fn : function fn(){
//			console.log(global);//100
//			global = 200;
//		},
//}
//GO{执行
//	global : 200,
//	fn : 10,
//}
//fn AO出现
{
	//里面没有变量
}

局部作用域:局部作用域一般只在固定的代码片段内可访问到,而其外部是无法访问的,它分为函数作用域和块级作用域
函数作用域: 当你在函数里定义一个变量时,它在函数内任何地方都可以使用。在函数之外,你就无法访问它了。

//例子:
		
		function num(a,b){
			console.log(a);//function
			function a(){};
			console.log(b);//function
			var a = 20;
			b = 30;
			function b(){};
			console.log(a);//20
			console.log(b);//30
		}
		num(1,2);
		
		//JS运行的步骤
		// 1、语法分析  
		// 2、预编译
		// 3、解释执行
		//函数声明整体提前,变量  声明提前
		// 作用域  全局window(Global Object)   局部作用 (AO  Activation Object)
		
		//  1,AO {在函数执行之前会创建AO进行预编译
		//先找出函数中用var关键字和function关键字创建的变量和函数
		//var关键字声明的变量声明提前值不提前
		//function声明的函数是整体提前
		// a : undefined  
		// b : undefined
		// }
		// 2,AO {
		//将实参值和形参统一
		// 	a : 1 
		// 	b : 2
		// }
		// 3,AO {
		//在函数中找函数声明,值赋予函数体
		// 	a : function a(){}
		// 	b : function b(){}
		// }
		// 4,执行{
		// 	a : function a(){}  20
		// 	b : function b(){}  30

		// }

块级作用域:你在使用大括号时,声明了一个const或者let的变量时,你就只能在大括号内部使用这一变量。

下面是我画的三张生命周期图

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值