箭头函数与一般函数this指向问题

82 阅读1分钟

一般函数this指向问题

1.全局作用域的指向 window

2.只有在函数调用的时候this指向才确定,不调用的时候不知道指向谁

3.this指向和函数在哪里调用没有关系,只和谁在调用有关

下面为具体实例

<script>
//指向window
console.log(this)
</script>
function add(){
console.log(this)

}
add()//没有任何人调用指向undefined到最后指向window
const cacl={
add:add//add为上面的函数}

cacl.add()//this指向cacl对象

const haha=cacl.add;
haha()//严格模式下this指向undefined,在非严格模式下,this指向window

document.onclick=function(){
    console.log(this)//this指向document
}

箭头函数this指向

箭头函数没有自己的this指向,只能通过作用域向外找

下面为具体实例

cosnt calcu={
    add:()=>{console.log(this)}
}
calcu.add()//this指向window,因为箭头函数没有this指向,跳到外层作用域去寻找,外层的calcu不是作用域,所以最后为window作用域
const lu={
add:function(){
    const adder=()=>{
     console.log(this)}    
     }
     adder();
    }
   lu.add()//this指向lu,因为调用的adder为箭头函数,没有作用域,向外层寻找,到add里面的函数域,函数域指向对象lu,所以最终指向lu