10、变量提升&上下文

变量提升
  • js引擎在代码执行之前会做预处理工作
    • 收集变量:var声明的变量定义,但是不赋值
    • 收集函数:function声明的函数就提前定义函数
console.log(username)        //undefined
var username = 'smileyqp'

fun();            //正常执行函数
function fun(){
    console.log('inner func')
}
执行上下文(excute context)
  • 理解:代码执行的环境
  • 时机:代码正式执行之前会进入到执行环境
    • 创建变量对象(变量提升)
      • 变量
      • 函数及函数的参数
      • 全局:window
      • 局部变量对象
    • 确认this指向
      • 全局window
      • 局部:调用其的对象
    • 创建作用域链
      • 父级作用域链+当前的变量对象
    • 扩展:执行上下文可以认为是一个大的对象,这个对象中主要包含
      • 变量对象:变量、函数、函数的形参
      • 作用域链Scopechain:父级作用链+当前作用域对象
      • this:window||调用其的对象

results matching ""

    No results matching ""