js变量以及作用域链

变量

  • 全局变量:定义的时候没有被任何括号括起来的变量,其作用域为整个文件
    var i = 123;//定义i
	function fun(){
		i = 666;
	}
	fun();
	console.log(i);//666
  • 局部变量:定义的时候,被任何括号括起来的变量,作用域为被声明的函数体内
  function fun(a,b){
		var c = 123;//定义c,在函数内部,作用域为该函数体内
	}
	
	console.log(c);//报错,外部不可以访问

在这里插入图片描述
注意事项:

  • 大量使用全局变量,会浪费内存(全局变量的生命周期,从这个页面开始开辟空间,页面结束,空间销毁,局部变量生命周期:什么时候调用该方法,开辟空间,调用结束,空间销毁)
  • .降低函数的独立性(降低其复用性)

作用域链

1.当内部变量和外部变量同名时,内部变量屏蔽外部变量

var i = 123;
function fun(){
  	var i = 456;
  	console.log(i);//456
  }
  
  fun();
  console.log(i);//123

2.函数嵌套时的作用域链:内部子函数可以使用外部父函数的局部变量,反之不可以

	function f1(a){
		var b = 2;
		var f2 = function(c){
			var d = 4;
			console.log(a,b,c,d);//1,2,3,4
		}
		f2(3);
		//console.log(d); //报错
	}
	f1(1);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值