变量提升&&执行上下文

//变量提升 预处理
js引擎在代码正式执行之前会做一个预处理的工作:
1.收集变量
2.收集函数
依据:
var 将var后边的变量定义但是不赋值 var username = undefined;
function(){} 提前定义该函数

console.log(username); //undefined
var username = 'kobe';
console.log(username); //kobe

fun();//正常执行函数
function fun(){
  console.log('fun()');
}

//执行上下文 执行上下文对象
执行上下文(execute context)EC
理解:代码执行的环境
时机:代码正式执行之前会进入到执行环境
作用域是代码定义的时候产生的。
执行上下文是代码马上要执行时产生的。
工作:
1.创建变量对象:
1)变量
2)函数及函数的参数
3)全局:window
4) 局部:抽象的但是确实存在
2.确认this的指向
1)全局:this--->window
2) 局部:this--->调用其的对象
3.创建作用域链
父级作用域链 + 当前的变量对象
4.扩展

   ECObj={
       变量对象:{变量,函数,函数的形参}
       scopeChain:  父级作用域链 + 当前的变量对象
       this:{  window  ||  调用其的对象  }
   }

执行上下文对象:this

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容