美文网首页
解释setTimeout的回调执行的原理

解释setTimeout的回调执行的原理

作者: 默成S | 来源:发表于2018-01-05 22:33 被阅读0次
function output() {
  var name = 'xiaoming';
  setTimeout(function () {
    console.log(name);
  }, 1000);
}
output();

能解释一下为啥setTimeout中的回调函数为啥能访问output的变量name吗?


setTimeout的第一个匿名函数的作用域能访问setTimeout执行时的上下作用域,这也就是为啥匿名函数内部可以访问变量name的原因。
拓展:如果能理解以下两个片段代码的运行机制,就彻底算是理解闭包了。

var name = "The Window";
var object = {
  name : "My Object",
  getNameFunc : function(){
    return function(){
     return this.name;
   };
 }
};
console.log(object.getNameFunc()());
var name = "The Window";
var object = {
  name : "My Object",
  getNameFunc : function(){
    var that = this;
    return function(){
       return that.name;
  };
 }
};

console.log(object.getNameFunc()());

相关文章

网友评论

      本文标题:解释setTimeout的回调执行的原理

      本文链接:https://www.haomeiwen.com/subject/wbkenxtx.html