在Javascript中执行作为参数传递的函数?

时间:2010-02-12 19:25:07

标签: javascript function arguments

我正在尝试编写一个通用函数,它会在进行AJAX调用时阻塞UI。我要做的是有一个函数A运行作为参数传入的任何其他函数。这是我到目前为止所得到的:

function blockWhileLoading(fn, msg)
{
  if (msg == null)
  {
    msg = 'Please wait while the next page is loaded...';
  }

  $.blockUI(
  {
    message: '<h1>' + msg + '</h1>',
    css:
    { 
      border: 'none', 
      padding: '15px', 
      backgroundColor: '#E3D9BA', 
      '-webkit-border-radius': '10px', 
      '-moz-border-radius': '10px', 
      color: '#4D2612'
    }
  }); 
  $('body').scrollLeft(0);

  setTimeout(function()
  {
    eval(fn);
    $.unblockUI();
  }, 1000);
}

现在到了评估函数的时候,似乎什么也没发生。 eval不是强制函数运行的正确方法吗?

4 个答案:

答案 0 :(得分:5)

不,eval用于在运行时将一大块“string”转换为JavaScript代码。只需致电fn()即可。这是一个功能参考。

这就是eval的作用:

var myalert = "alert('test');";
eval(myalert);

相当于:

eval("alert('test');");

答案 1 :(得分:4)

只需使用fn();

即可

答案 2 :(得分:0)

为什么不简单地使用:

fn();

而不是eval

答案 3 :(得分:0)

如果fn作为对象而不是字符串传递,则调用fn()应该有效。