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。