javascript - 返回函数内的 setInterval 不起作用

标签 javascript

我有一个类似于下面的代码。

function test(){
   return function(){
      setInterval(//Another Function Reference // ,1000);
   }
}

我正在调用 test()();

我发现上面的代码不起作用。有人可以解释一下为什么吗?

最佳答案

您的代码中没有闭包1test 返回一个函数对象,但该 [function] 并未执行。在代码片段中,内部函数使用了 3 个闭包,将返回的函数对象分配给一个变量,然后执行该变量。返回函数对象的好处是您可以将其分配给不同的值并单独执行它们。

1问题的早期版本提到“关闭不起作用

// startInterval: interval 1 second, message: 'Hello' (default)
var startInterval = test(null, 1000);
// anotherInterval: interval 5 seconds, message: ''Hello to you too''
var anotherInterval = test('<i>Hello to you too</i>', 5000);

// execute the function objects
startInterval();            
anotherInterval();

// [hithere], [time] and [result] are closed over
function test(hithere, time){
   hithere = hithere || 'Hello';
   time = time || 1000;
   var result = document.querySelector('#result');
   return function(){
      setInterval(function(){
         result.innerHTML += hithere+'<br>';
      },time || 1000);
   }
}
<div id="result">Greetings!<hr></div>

关于javascript - 返回函数内的 setInterval 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27819108/

相关文章:

javascript - JavaScript 中的作用域规则

javascript - jquery mobile 每 10 秒自动加载和刷新一次 div

javascript - setTimeout 长时间重置

php - 如何使用 Post Ajax 传递多维 JS 数组

javascript - 如何使 document.addEventListener ('click' 适用于具有 stoppropogation 的元素?

javascript - 在我的网站上显示来自远程服务器的 RSS 源?

javascript - Plotly.relayout() 给出错误

javascript - 使用 Node.js 和 MongoDB 存储密码

javascript - 在 HTML5 Canvas 上绘制不完美的球

javascript - 具有 promise 的流类型(获取的)