在下面的代码中,setInterval
无法正常工作,即在function greet
之后拨打3s
。它在greet
之前第一次调用3s
。
name = "Superman";
function greet(name) {
alert("Hello " + name)
}
setInterval(greet(name), 3000);
任何人都可以告诉我我做错了什么。
由于 BT
答案 0 :(得分:1)
setInterval
的第一个参数需要是一个函数。
您立即致电greet
并将其返回值(undefined
,因为没有return
声明)传递给setInterval
。
如果你想用一个间隔的参数调用greet
,创建一个新函数来执行该操作并传递那个函数。
var name = "Superman"; // Added `var` here. Implicit globals are problematic and banned in strict mode.
function greet(name) {
alert("Hello " + name)
}
function greetName() {
greet(name);
}
setInterval(greetName, 3000);
答案 1 :(得分:1)
如果以全局方式使用变量,就像您的示例一样。您不需要在函数中有参数。然后你可以这样做:
name = "Superman";
function greet() {
alert("Hello " + name)
}
setInterval(greet, 3000);

但是,如果你仍然想要一个参数,你可以这样做:
name = "Superman";
function greet(name) {
alert("Hello " + name)
}
setInterval(function () {
greet(name);
}, 3000);

答案 2 :(得分:0)
试试这个:
name = "Superman";
function greet(name) {
alert("Hello " + name)
}
setInterval(function() { return greet(name) }, 3000);
答案 3 :(得分:-1)
您应该在function(){}
内的函数调用中添加匿名函数setInterval()
,因为您将参数传递给它:
name = "Superman";
function greet(name) {
alert("Hello " + name)
}
setInterval(function() { greet(name) }, 3000);
或者只是将参数作为参数传递到最后,例如:
setInterval(greet, 3000, name);
希望这有帮助。
name = "Superman";
function greet(name) {
console.log("Hello " + name)
}
//setInterval(function() { greet(name) }, 1000);
//Or
setInterval(greet, 1000, name);