setTimeout为另一个函数的函数提供参数

时间:2013-04-07 02:10:42

标签: javascript function

遇到问题,不知道如何给ClickSimMove func公开的ClickSimClick函数参数(它返回带有2个值的数组)。

下面的代码表示在setTimeout上未定义crd。

var crd = plugin().ClickSimMove();
setTimeout("plugin().ClickSimClick(crd[0], crd[1])", 1000);

2 个答案:

答案 0 :(得分:2)

传递函数,而不是字符串:

var crd = plugin().ClickSimMove();
setTimeout(function() {
    plugin().ClickSimClick(crd[0], crd[1]);
}, 1000);

当您传递一个字符串时,它会在全局范围内与eval进行评估,从而失去对局部变量的所有访问权限。匿名函数允许您引用范围内的任何变量。

答案 1 :(得分:1)

var crd = plugin().ClickSimMove();
setTimeout(function(){
  plugin().ClickSimClick(crd[0], crd[1]);
}, 1e3);

尽可能避免向setTimeout / setInterval发送字符串 - 请改用匿名函数。特别是如果你发现你自己连接变量来制作那个字符串,你可以通过某种注入或格式错误的组件很快地遇到麻烦。