禹城新闻网(setTimeout 和 setInterval 中 this 指向)

禹城新闻网:今天在验证总结JavaScript的this指向的情况,当总结到setTimeout和setInterval的this时有了新的发现。

废话不多数,先旗帜鲜明地给出结论:

1、setTimeout和setInterval定时器的第一个参数执行函数的this指向,在浏览器中永远指向window对象,在node.js环境中永远指向当前定时器的实例对象;
2、在浏览器中,调用setTimeout 和 setInterval 返回了一个定时器id数字,而在node.js中返回的是当前定时器的实例对象,差别明显。

接下来验证:

在浏览器中运行如下代码:

let obj = {
    foo: function () {
        let timer = setTimeout(
            function () {
                console.log(this);
                console.log(typeof timer, timer);
            }, 200);
    }
}

obj.foo();

运行结果:

禹城新闻网(setTimeout 和 setInterval 中 this 指向)

没问题,this指向window对象;

再看在node.js中,执行如下代码:

let obj = {
    foo: function () {
        let timer = setTimeout(
            function () {
                console.log(this === timer);
                console.log(typeof timer);
                console.log(this);
            }, 200);
    }
}
obj.foo();

禹城新闻网(setTimeout 和 setInterval 中 this 指向)

可以看到this,指向当前定时器实例timer。

减少一下干扰代码,去掉外层的对象,如下:

let timer = setTimeout(
    function () {
		console.log(this === timer);
		console.log(typeof timer);
		console.log(this);
    }, 200);

禹城新闻网(setTimeout 和 setInterval 中 this 指向)

结果完全相同。

而且还得到另一个结论:

在浏览器中,调用setTimeout 和 setInterval 返回了一个定时器id数字,而在node.js中返回的是当前定时器的实例对象,差别明显。
本文《禹城新闻网(setTimeout 和 setInterval 中 this 指向)》由网赚联盟( wangzhuan.org.cn )整理或原创,感谢您的阅读。

随机文章

友情链接交换
关键词排名优化
网站内容优化
SEO小小课堂网
SEO教程
友情链接交换
搜素引擎算法
关键词排名优化

百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:用户投稿,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/24824.html