为了账号安全,请及时绑定邮箱和手机立即绑定

this指向的问题,希望大家指点一下

this指向的问题,希望大家指点一下

DIEA 2018-08-02 18:21:48
这两个在学ES6的相关语法,在学到箭头函数的this问题的时候,我与之前学的ES5中的this进行相对比的时候,发现下面这行代码得到不可思议的结果:var age = 77;function foo() {    var age = 18;     setTimeout(function () {        console.log(this.age);//undefined     },3000) } foo();有没有大佬知道这里面的问题。我的理解是这个应该输出77.但是这里却输出了undefined
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

知道问题所在了。
援引一位大神的解释
在浏览器环境下正常的,seTimeout中的this实际指向window,输出77。如果在node环境下运行就不一样了。node环境下也有自己的setTImeout计时器,它的this指向Timeout对象,Timeout对象没有age属性,就返回undefined了。你自己可以输出this看看就明白了。

查看完整回答
反对 回复 2018-08-04
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

你看错了吧,延时3s后输出的才是77,没错

https://img1.sycdn.imooc.com//5b657c9700013f7405270213.jpg

https://img1.sycdn.imooc.com//5b657c9700016eac05660262.jpg


查看完整回答
反对 回复 2018-08-04
  • 2 回答
  • 0 关注
  • 638 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信