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

这两个在学ES6的相关语法,在学到箭头函数的this问题的时候,我与之前学的ES5中的this进行相对比的时候,发现下面这行代码得到不可思议的结果:
var age = 77;

function foo() {    var age = 18;
    setTimeout(function () {        console.log(this.age);//undefined
    },3000)
}
foo();

https://img4.mukewang.com/5b657c770001454908000317.jpg

有没有大佬知道这里面的问题。我的理解是这个应该输出77.但是这里却输出了undefined

DIEA
浏览 639回答 2
2回答

繁花如伊

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

繁星点点滴滴

你看错了吧,延时3s后输出的才是77,没错
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript