在JavaScript中传递参数以正常运行的正确方法是什么?

时间:2013-01-16 16:47:56

标签: javascript setinterval

在我的javascript代码中,我有以下内容:

function foo(param1) {
    setInterval( bar(param1), 3000 );
}

function bar(msg) {
    alert(msg);
}

function set() {
    foo('hello');
}

在页面加载时我调用set(),它只提供一次警报消息。为什么它不能像我期望的那样工作。我认为问题在于我传递foo()函数的参数,但究竟是什么,我无法弄清楚。

如果问题与参数有关,那么可以采用哪种方法来实现所需的结果。

感谢。

3 个答案:

答案 0 :(得分:2)

最好的方法是使用closure从您传递给setInterval的函数中访问参数:

function foo(param1) {
    setInterval(function () {
        bar(param1);
    }, 3000);
}

function bar(msg) {
    alert(msg);
}

function set() {
    foo('hello');
}

答案 1 :(得分:1)

当你给出调用整个函数的返回值时,

setInterval需要一个函数。

应该有效的修改版本:

var msg = null;

function foo(param1) {
   // When foo is called, its argument is set to msg variable, so the function called 
   // by setInterval will have access to the message that must show in a window.alert
    msg = param1;
    setInterval(bar, 3000 );
}

function bar() {
    alert(msg);
}

function set() {
    foo('hello');
}

答案 2 :(得分:1)

你需要将一个函数传递给setInterval,你正在执行一个函数并传递它的返回值(undefined,因为执行的函数没有返回值)。

尝试使用匿名函数:

function foo(param1) {
    setInterval(function () {
        bar(param1);
    }, 3000);
}

function bar(msg) {
    alert(msg);
}

param1永远不会改变,所以不需要更复杂的东西。 Here's a working example.