箭头回调函数中的此绑定

感谢您的帮助和解释。 我不清楚以下代码中的第二个和第三个警报与第一个警报不同的原因。

箭头函数具有词法绑定。这一点很清楚。 为什么在对象方法调用中包含箭头函数表达式作为参数会导致“ this”有所不同,“ this”以某种方式绑定到全局名称变量。

var name = "globalscope name";

let person = {
    name: 'Tommy',
   
    showName(a){
        let fun1 = ()=>this.name;
        let fun2 = a;
        alert(fun1()); //Tommy - this is behaving as expected base on lexical binding
        alert(a()); // globalscope name - this is not
        alert(fun2()); //globalscope name
    }
}

person.showName(()=>this.name);