美文网首页
解释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