参考:https://github.com/ruanyf/es6tutorial/issues/150
1.“箭头函数”(arrow function)是 规格 里面的用语。事实上,整个规格里面一次也没有提到
2.“箭头函数”的this,总是指向定义时所在的对象,而不是运行时所在的对象 。这句话是对的,并没有写错
1.“箭头函数”(arrow function)是 规格 里面的用语。事实上,整个规格里面一次也没有提到
lambda
。2.“箭头函数”的this,总是指向定义时所在的对象,而不是运行时所在的对象 。这句话是对的,并没有写错
3.
function
setTimeout(()
console.log("id:",
},
}
请问,上面代码的{id: 42}
,到底是箭头函数定义时所在的对象,还是运行时所在的对象?
你认为,答案是后者。这是不对的。
因为,这个例子中,箭头函数位于foo
函数内部。只有foo
函数运行后,它才会按照定义生成,所以foo
运 行时所在的对象,恰好是箭头函数定义时所在的对象。
4.
function
setTimeout( ()
console.log(this);
请问,上面两个id
,哪个是箭头函数定义时所在的对象,哪个是箭头函数运行时所在的对象?
5.你把箭头函数所在的函数与箭头函数本身混淆了。
6.最后,我再举一个例子。
请问,下面的代码运行结果是什么?
functionfoo() { return () => { return () => { return () => { console.log("id:", this.id); }; }; }; } var f = foo.call({id: 1}); var t1 = f.call({id: 2})()(); var t2 = f().call({id: 3})(); var t3 = f()().call({id: 4});