为了账号安全,请及时绑定邮箱和手机立即绑定

关于es6箭头函数的一些小问题

关于es6箭头函数的一些小问题

FFIVE 2018-10-10 13:14:03
var id =21;        function testThis(){            setTimeout(function(){                console.log(this.id);            },1000);        }        let testThis2 = ()=>{            setTimeout(function(){                console.log(this.id);            },1000);        }        function testThis3(){            setTimeout(()=>{                console.log(this.id);            },1000);        }        testThis();        testThis2();        testThis3();        testThis.call({id:42});        testThis2.call({id:42});        testThis3.call({id:42});为什么 testThis2.call({id:42}); console的是21呢。
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

因为看this首先看它所在的function, testThis2表面上自身是用了箭头函数,但只能说,testThis2的函数执行内容里的this可以按.call({id:42})绑定,而setTimeout里面还有一个function,里面的this是要看这个内部function的,不会去看testThis2的this的。
所以才有testThis3的做法嘛~

查看完整回答
反对 回复 2018-11-27
  • 1 回答
  • 0 关注
  • 515 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信