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

发布于 2022-09-07 19:51:23 字数 394 浏览 16 评论 0

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

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

clipboard.png

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧梦荧光笔 2022-09-14 19:51:23

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

一萌ing 2022-09-14 19:51:23

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

clipboard.png

clipboard.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文