js面试题-setTimeout中的this指向问题

说明:setTimeout函数的延迟执行函数中this指向window,但是延迟执行函数是箭头函数this指向obj
var name='nico';
var obj={
    name:'coco',
    show:function(){
        console.log(this.name)
    }
}
setTimeout(obj.show)

打印结果为:nico

 由于setTimeout()调用的代码运行在与所在函数完全分离的执行环境上,这会导致,这些代码种包含的this关键字在非严格模式下会指向window(或全局)对象,严格模式下为undefined。(备注:即使在严格模式下,setTimeout的回调函数里面的this仍然默认指向window对象,并不是undefined)

var name = 'nico';
var obj = {
  name: 'coco',
  show: function () {
    console.log(this.name);
  },
};
setTimeout(() => {
  obj.show();
});

打印结果为:coco

posted @ 2023-02-23 16:47  南无、  阅读(133)  评论(0)    收藏  举报