JavaScript:使用setInterval()将变量从一个函数传递到另一个函数?

JCO*_*611 3 javascript variables function

所以我有一个循环执行函数的函数,例如:

function(f){
  var variable;
  for(z = 0; z < 10; z++){
    variable = "cool";         
    setInterval(f)
  }
Run Code Online (Sandbox Code Playgroud)

顺便说一句,真正的功能比这更复杂,但它是相同的理论.我希望能够在参数f中执行该函数并设置一些变量(例如变量),以便该函数可以使用它们,总的来说这是一个想法:

function say(f){
   var variable = "hey";
   setInterval(f);
}
say(function(){
   alert(variable)
});
Run Code Online (Sandbox Code Playgroud)

在这里,应该有一个警告框说.这是理论,但它不会起作用:

变量"变量"未定义

浏览器可能只是忽略错误并提醒undefined.

但无论如何,如何在不改变变量范围的情况下 "传递"变量.

Jac*_*kin 7

JavaScript有闭包,所以你可以这样做:

var x = 0;
setInterval(function() {
   //do something with x
}, 1000);
Run Code Online (Sandbox Code Playgroud)

在您的具体情况下,您应该这样做:

function say(f){
   var variable = "hey";
   setInterval(function() { 
       f(variable); //invoke the say function's passed-in "f" function, passing in "hey"
   }, 1000);
}
say(function(arg){
    //arg will be "hey"
    alert(arg);
});
Run Code Online (Sandbox Code Playgroud)

setInterval接受两个参数,第二个是您希望延迟执行传入函数引用的时间量(以毫秒为单位).