作用域、作用域链、自由变量、变量提升

一、作用域

对象 类型
global/window 全局作用域
function 函数作用域(局部作用域)
{}块状作用域
this动态作用域

全局作用域 :任何地方都可以访问,反复使用
函数作用域(局部作用域):仅在函数内部可使用的变量,不能反复使用
例子:

var a=10;
	function fun()
	{
		var a=100;
		a++;
		console.log(a);
	}
	fun();//101

	console.log(a);//10

二、作用域链
自由变量的向上级作用域一层一层查找,直到找到为止,最高找到全局作用域,就形成了作用域链。

三、自由变量
自由变量的概念: 当前作用域没有定义的变量

  var a=0;
    function f1(){
 console.log(a) //当函数中没有定义这个变量,切可以使用时,这就是自由变量
    }
    f1()

四、变量提升
var声明的变量,function声明的函数存在变量提升
let const 不会变量提升

五、预解析
只要还有一个函数作用域的时候就会有域解析:
var跟函数可以变量提升

1.第一种情况 全局
因为var 变量提升了 ,因为变量提升了没有赋值所以第一个a是undefind

`提升到了 这里      var a `


console.log(a) //undefind
var a = 10
console.log(a)// 10

2.第二种函数内部
因为 function x() 跟 var 变量提升了
有function 的时候会先提升

`提升到了 这里   function x()   var a `
  var x = 30;
  function test(){
      alert(x);     //undefined
      var x = 10;    
      alert(x);     //10
      x=20;
      function x(){

      };
      alert(x);     //20
  }
  test();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值