Javascript 返回函数内的setInterval不起作用

Javascript 返回函数内的setInterval不起作用,javascript,Javascript,我有一个类似于下面的代码 function test(){ return function(){ setInterval(//Another Function Reference // ,1000); } } 我叫test() 我看到上面的代码不起作用。有人能解释一下为什么吗 它对我有用。。。您正在返回一个函数,因此需要调用此函数: 我假设您希望test()是一个自调用函数,因此返回函数只设置一次,因此请执行以下操作: 它似乎工作得很好。请记住,如果调用test()

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

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


我看到上面的代码不起作用。有人能解释一下为什么吗

它对我有用。。。您正在返回一个函数,因此需要调用此函数:

我假设您希望
test()
是一个自调用函数,因此返回函数只设置一次,因此请执行以下操作:


它似乎工作得很好。请记住,如果调用
test()
,您只需返回函数,但尚未运行它。要运行它,需要调用结果函数。您可以通过以下任一方式完成此操作:

test()();
或:


代码1中没有结尾<代码>测试返回函数对象,但未执行该[function]。在代码段中,内部函数中使用了3个闭包,返回的函数对象被分配给一个变量,然后执行该变量。返回函数对象的优点是,您可以将其分配给不同的值并分别执行

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

//startInterval:间隔1秒,消息:“Hello”(默认)
var startInterval=测试(空,1000);
//另一个间隔:间隔5秒,消息:“你好,我也是”
var anotherInterval=test('Hello to you too',5000);
//执行函数对象
startInterval();
另一层();
//[至此]、[时间]和[结果]已结束
功能测试(迄今为止,时间){
你好;
时间=时间| | 1000;
var result=document.querySelector(“#result”);
返回函数(){
setInterval(函数(){
result.innerHTML+=heree+'
'; },时间| | 1000); } }

你好
将内部函数绑定到上下文,问题是当设置的间隔最终执行时,它在全局范围内,而不是从中调用它。可以这样修复:

function test(){
   return function(){
      setInterval(/*Another Function Reference */ ,1000);
   }.bind(this)
}

你期望它做什么?这里没有闭包。编辑之前的代码看起来可以工作。编辑后的代码显然不是包含注释的真实代码,那么我们如何猜测真实代码的错误呢?至少在没有占位符注释的情况下显示该行。浏览器的开发控制台中是否有任何错误?这不起作用:您试图调用
setInterval()
的返回值
bind()
,该值是一个id而不是一个函数。
function test(){
   return function(){
      setInterval(function(){
         alert("Hello");
      },1000);
   }
}

var hello = test();
hello();
test()();
var myFunction = test();
myFunction();
function test(){
   return function(){
      setInterval(/*Another Function Reference */ ,1000);
   }.bind(this)
}