BFE.devAI解答 - JavaScript 小测验
6. Arrow Function
该代码将输出:
bfe
bfe
undefined
bfe
bfe
bfe
undefined
undefined
bfe
解释:
obj.a()
返回this.dev
,this
指向obj
,obj.dev
等于bfe
,因此输出bfe
。obj.b()
和obj.e()
都调用了this.b()
,this
指向obj
,因此输出bfe
。obj.c()
使用箭头函数,箭头函数没有自己的this
,因此此处的this
指向全局对象,即window
对象,因为在浏览器环境下运行。由于window.dev
未定义,因此输出undefined
。obj.d()
使用了立即调用的箭头函数,该箭头函数使用的this
同样指向obj
,因此输出bfe
。obj.f()()
输出bfe
,因为obj.f()
返回了一个函数,再调用该函数,即相当于调用obj.b()
,因此输出bfe
。obj.g()
调用了this.c()
,注意此处的c
是使用箭头函数定义的,因此this
同样指向全局对象,输出undefined
。obj.h()()
输出undefined
,原因同上。obj.i()()
返回使用箭头函数定义的函数,该箭头函数使用的this
同样指向obj
,因此输出bfe
。