JavaScript中的callback混乱,Node.js

statusDefault = status.textContent, setStatus = function(s){ status.textContent = s;//to set any status if(s != statusDefault){ var delay = setTimeout(function(){ setStatus(statusDefault); clearInterval(delay); },3000); } }; setStatus('Testing..'); 

在上面的代码中,我没有得到它的工作原理。 默认状态变为“testing..”,3秒后再次显示默认状态。 我很困惑。

它是如何工作的?

 statusDefault = status.textContent, 

在内容更改之前复制内容,并将其caching到JavaScript中。 这是默认的内容。

 setStatus = function(s){ status.textContent = s; 

当函数运行时,将第一个参数设置为statustextContent 。 简而言之,它只是改变了函数运行时元素的内容。

 if(s != statusDefault){ 

检查默认值没有先input。

 var delay = setTimeout(function(){ setStatus(statusDefault); clearInterval(delay); }, 3000); 

创build一个持续3000毫秒(3秒)的超时,3秒后再次用setStatus(statusDefault)自己调用它自己,这将重置内容到最初的状态(因为statusDefault ),它也会呈现前一个if语句为false,所以它不会创build另一个超时。

这里是一个更简短的(也许更容易理解)列表:

  1. 原始内容被复制到statusDefault
  2. 内容设置为'Testing..'
  3. 'Testing..'不等于原始内容。
  4. 创build持续3秒的超时(创build3秒延迟)。
  5. 函数再次在内部调用,传入statusDefault
  6. 内容设置为statusDefault
  7. 如果陈述是错误的。 没有更多的任务,JavaScript完成。