JavaScript中setTimeout和setInterval函数的传参及调用

网络编程 2025-03-29 18:20www.168986.cn编程入门

关于传参。看下面的代码:

```javascript

var str = 'aaa';

var num = 2;

function auto(a){

alert(a);

}

setTimeout('auto(str)',0);

```

这种方式其实是将`auto(str)`当作字符串传递,而非将函数和参数作为回调。这种方式不如直接将函数和参数作为回调传递的方式来得直观和有效。如果想传递除字符串以外的参数,可以使用闭包。例如:

```javascript

var num = 2;

function test(){

var str = 'bbb';

setTimeout(auto(str),0);

}

function auto(str){

return function(){

alert(str);

}

}

test();

```

在这个例子中,通过闭包将变量`str`传递给定时器执行的函数。值得注意的是,如果不使用闭包直接传递参数,定时器调用的函数需要加引号,否则会出现错误。同样的情况也适用于setInterval函数。

接下来,关于setTimeout和setInterval中的函数调用。看下面的代码:

```javascript

var num = 2;

function auto(){

alert(num);

}

setTimeout(auto(),0);

```

这段代码会在页面加载后立即弹出警告框,因为定时器执行的是已经执行完成的函数返回值,而不是函数本身。定时器并未起到作用。要让定时器正常工作,需要将函数名(不带括号)传递给setTimeout或setInterval,例如:

```javascript

setInterval('auto()',0);

setTimeout('auto()',0);

```

这种方式可以让程序正常工作,定时器会定期或延迟调用`auto`函数。如果不使用`auto()`调用函数,只使用函数名`auto`,同样需要利用闭包等技术来正确传递参数。理解JavaScript中函数的调用方式和参数的传递方式对于正确使用setTimeout和setInterval非常重要。JavaScript的奥秘:函数调用的差异与定时器的魔力

在JavaScript的世界里,代码的执行方式有时令人着迷。让我们深入一段简单的代码,理解其中的奥妙。

假设我们有以下代码:

```javascript

var str = 'aaa';

var num = 2;

function auto(){

alert(num);

}

setTimeout(auto,0);

```

这段代码定义了一个名为`auto`的函数,它会在4秒后(0毫秒)通过`setTimeout`函数执行,弹出一个警告框显示变量`num`的值。这样写,程序可以正常工作。

如果我们尝试使用字符串形式来调用函数,情况就会发生变化。例如:

```javascript

setTimeout('auto',0);

```

这段代码看起来和上面的很相似,但关键的区别在于`auto`的调用方式。在这里,`'auto'`是一个字符串,而不是一个函数对象。JavaScript会尝试将这个字符串为代码并执行,但由于安全原因,它不允许这样做。这段代码无法正常执行。

再来看另一个例子:

```javascript

//setInterval('auto',0);

```

这段代码尝试使用`setInterval`函数每隔4秒执行一次`auto`函数。但由于同样的原因,使用字符串形式的函数调用也会失败。这是因为`setInterval`和`setTimeout`期望接收的是一个函数作为第一个参数,而不是一个字符串。当它们接收到字符串时,会尝试将其为代码并执行,这在大多数情况下是不允许的。如果你想使用定时器来调用函数,应该直接传递函数对象作为参数,而不是函数的字符串表示形式。这就是JavaScript中函数调用的基本规则。理解了这一点,我们就可以避免很多常见的错误和困惑。至于那句“cambrian.render('body')”,我们需要更多的上下文信息才能给出准确的解释。

上一篇:asp google pr查询代码 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by