ES6 之箭头函数
看上面这张图片,你的第一想法会是什么?是 2?是 1?还是其他答案?
箭头函数
那么我先简单的介绍一下箭头函数,箭头函数是 ES6 推出的函数,它没有 this
和 arguments
。把上面图片的代码放下来,我们逐步分析。
示例
复制代码
这段代码一共涉及到三个知识点:箭头函数,作用域,let
解题思路
调用了 obj.fn(),我们的视线来到了 console.log(this.a);
在定时器的箭头函数中,并没有 this,需要向上层作用域寻找
这时候我们把目光移到 fn 的箭头函数上,但是这里也没有 this,再向上层作用域寻找
有些人到这里就会认为,this 指向的是 obj,this.a 就是 2,然而并不是。obj 是个对象,它的大括号并不是一个作用域。所以 fn 箭头函数的上层作用域就是 window
一部分人认为答案是 1,就是认为 let 定义的变量在 window 上,然而也不是。通过 window.a 能发现,let 并不能将变量定义在 window 上。
到了这里我们知道,this 指向的是 window,let 定义的 a 不在 window,那么结果就是 undefined
举一反三
复制代码
相比之前,我们打印的是 a ,那么结果会是什么呢?😘
版权声明: 本文为 InfoQ 作者【bo】的原创文章。
原文链接:【http://xie.infoq.cn/article/f2f7ab9b60d2c61ef628cffa4】。文章转载请联系作者。
评论