在控制台中执行settimeout函数期间显示的匿名号码是什么?

时间:2019-06-21 03:26:09

标签: javascript settimeout

我尝试使用javascript中的回调执行settimeout()函数。每次我使用它时,都会显示一个匿名随机数(仅在控制台中)。我想知道那是什么。

setTimeout(function() {   
      console.log("one");   
      setTimeout(function() {   
         console.log("two");   
         setTimeout(function() {   
            console.log("three");   
         }, 1000);   
      }, 1000);   
   }, 1000);   

执行上面的代码可以在控制台中找到一个数字:

Execution of the above code gives me a number in console

1 个答案:

答案 0 :(得分:2)

控制台将显示上面评估的最终表达式(同步)的结果。因为setTimeout返回一个与超时的唯一ID相对应的数字,所以这就是您所看到的数字-最外面的setTimeout的ID。

(此ID很有用,因为它意味着您可以将其传递给clearTimeoutclearInterval来清除现有的超时或间隔。)

您将看到与此代码相同的输出,其中将ID显式分配给变量,然后在最后一行再次求值:

outerTimeoutId = setTimeout(function() {   
  console.log("one");   
  setTimeout(function() {   
    console.log("two");   
    setTimeout(function() {   
      console.log("three");   
    }, 1000);   
  }, 1000);   
}, 1000);
outerTimeoutId;  // <-- results in some number being displayed in the console