函数作用域

1. javaScript作用域 : 
					就是代码名字(变量) 在某个范围内起作用和效果  目的是为了提高程序的可靠性更重要的是减少命名冲突

			2. js的作用域(es6)之前:全局作用域  局部作用域
			3. 全局作用域: 整个script标签 或者是一个单独的js文件
			var num = 10;
			var num = 30;
			console.log(num);//30
			4. 局部作用域(函数作用域): 
					在函数内部就是局部作用域  这个代码的名字只在函数内部起作用和效果
				function fn() {
					//局部作用域
					var num = 20;
					console.log(num);
				}
				fn();//20
			5.变量的作用域: 
					根据作用域的不同我们变量分为全部变量和局部变量
			6.全局变量: 
					在全局作用域下的变量  在全局下都可以使用
			7.注意  如果在函数内部  没有声明直接赋值的变量也属于全局变量
				var num = 10;//num就是一个全局变量
				console.log(num);

				function fn(){
					console.log(num);
				}
				fn();

			8.局部变量  在局部作用域下的变量  后者在函数内部的变量就是  局部变量
			9.注意  函数的形参也可以看作局部变量
				function fun() {
					var num1 = 10;//num1就是局部变量  只能在函数内部使用
					num2 = 20;
				}
				fun();
				// console.log(num1);
				console.log(num2);
			10. 从执行效率来看全局变量和局部变量
			(1)全局变量只有浏览器关闭的时候才会销毁 ,比较占内存资源
			(2)局部变量  当我们程序执行完毕就会销毁 , 比较节约内存资源

			11. js中没有块级作用域  
				(1).js的作用域: 全局作用域  局部作用域  现阶段我们js 没有 块级作用域
				(2).我们js 也是在 es6 的时候新增的块级作用域
				(3).块级作用域{}  if{}  for{}					
			   (4).作用域链   内部函数访问外部函数的变量 , 采取的是链式查找的方式来决定取哪个值 这种结构我们称为作用域链  就近原则
					站在目标出发一层一层往外查找

					var num = 10;
					function fn( ) {//外部函数
						var num = 20;

						function fun( ) {//内部函数
							console.log(num);//20
						}
						fun( );
					}
					fn( );

			12. 预解析
			 (1). 我们js引擎运行js 分为两步: 预解析  代码执行
			 (2). 预解析 js 引擎会把 js 里面所有的var 还有 function 提升到当前作用域的最前面
			 (3). 代码执行 按照代码书写的顺序从上往下执行
			2. 预解析分为  变量预解析(变量提升)和函数预解析(函数提升)
			(1)变量提升 就是把所有变量声明提升到当前的作用域最前面   不提升赋值操作
			(2)函数提升 就是把所有函数声明提升到当前的作用域最前面   不调用函数

			3.变量提升
			console.log(num);//undefind 
			var num = 10;
			//相当于执行了以下代码
			var num;
			console.log(num);

			fun();//报错
			var fun = function() {
				console.log(22);
			}
			4.变量提升
			//相当于执行了以下代码
			var fun;
			fun();
			fun = function(){
				console.log(22);
			}

			5.函数提升
			fn();
			var = function fn(){
				console.log(11)
			};

			//相当于执行了以下代码				
			var = function fn(){
				console.log(11)
			};
			fn();


			6.函数表达式  调用必须写在函数表达式的下面
			fun();//报错
			var fun = function() {
				console.log(22);
			}	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值