var obj = { a: 2, } var a = 3; const func = () => { console.log(this.a); } function test() { setTimeout(func, 100); } function test2() { setTimeout(() => { console.log(this.a); }, 100); } test.call(obj); //3 test2.call(obj); //2Parecía que test y test2 son iguales, pero el resultado devuelto es diferente, ¿cuál es el problema con 'esto'?
con la función de arrow de test , this se referirá al objeto de la window , y como var a = 3 , la a se asignará como una propiedad a la window , será como
window.a Pero en test2 this se referirá al objeto obj .