作用域

  在js代码执行前,浏览器会有一个全局环境叫window,在window下分为俩个模块

一个为内存模块,一个为执行模块。

   内存模块会找到所有带var与function的关键字

   执行模块会一次从上到下查找

   如果找到var 这个变量,就看他有没有赋值,如果赋值就是那个值

   如果没有赋值就是undefined

   如果没有找到这个变量,就是is not defined

作用域:浏览器给js的一个生存环境(栈内存)

作用域链:函数内部的变量被使用时,首先会在他的私有作用域下查找,

      有没有这个变量,如果有就使用没有就向上查找,父级有

     就使用父级的,父级没有就继续向上查找,知道找到window

     window有就使用,没有就是is not defined

this:this也是js的一个关键字,它就是一个替代,指定一个对象去替代它

this又分为函数内的this与函数外的this:

   函数内的this是指向行为发生过的主体

   函数外的this是指向window

列如:function.yangxiaorong(){

    consoloe.log(this)

}

杨.yangxiaorong 里边的杨就是这个函数的主体

function.yangxiaorong(){

    consoloe.log(this)

}

yangxiaorong(window)

因为浏览器在执行js代码时候,在执行到yangxiaorong的时候,查找到变量的归属为window

函数内的this和函数在什么环境下定义都没有关系,跟自已的主体有关系

主体:就是看这个函数(方法)带不带点,如果有this就指向点前面的,如果没有this就指向window

自执行函数里的this都指向window

~function(){console.log(this)}()自执行

给元素一个方法,绑定方法事件,触发时就执行绑定的方法,方法中的this指向当前元素

    

原文地址:https://www.cnblogs.com/yang08/p/9885379.html