关于箭头函数的理解摘记

参考:https://github.com/ruanyf/es6tutorial/issues/150
1.“箭头函数”(arrow function)是
规格 里面的用语。事实上,整个规格里面一次也没有提到 lambda
2.“箭头函数”的this,总是指向定义时所在的对象,而不是运行时所在的对象 。这句话是对的,并没有写错

3.
function foo(){ 
setTimeout(() => 
console.log("id:"this.id
}, 
100); 

  foo.call({id:42});
请问,上面代码的{id: 42},到底是箭头函数定义时所在的对象,还是运行时所在的对象?
你认为,答案是后者。这是不对的。
因为,这个例子中,箭头函数位于foo函数内部。只有foo函数运行后,它才会按照定义生成,所以foo运 行时所在的对象,恰好是箭头函数定义时所在的对象。

4. 我对上面这个例子,做了一下修改。
function foo() { 
setTimeout( () => {
       console.log(this);
       
console.log("id:"this.id); 
   },
100); 
     
          var id = 21// 加入这行 
    foo.call( { id: 42 } );
请问,上面两个id,哪个是箭头函数定义时所在的对象,哪个是箭头函数运行时所在的对象?
5.
你把箭头函数所在的函数与箭头函数本身混淆了。

6.最后,我再举一个例子。

请问,下面的代码运行结果是什么?

function foo() {
     return () => {
       return () => {
         return () => {

           console.log("id:"this.id); 
       
	 };
 
     };
 
   };
} 
var = foo.call({id: 1}); 

var t1 = f.call({id: 2})()(); 

var t2 = f().call({id: 3})(); 

var t3 = f()().call({id: 4});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值