我想编写这样的函数:

function doGoodJob(someId, callBackfunction){

// some stuff with someId

// todo: RUN callBackFunction here

}

他们说,就代码注入(inject)而言,eval是“危险的”。

因此,编写一个接受回调函数并安全运行的JavaScript函数的最佳实践是什么?

最佳答案

您的回调是字符串还是实际函数?

如果它是一个功能。

function doGoodJob(someId,callbackFunction)
{
     callbackFunction();
}

doGoodJob(1,function(){alert('callback');});

如果它是字符串,则可以使用Function构造函数。
function doGoodJob(someId,callbackFunction)
{
     var func = new Function(callbackFunction)
     func();
}
doGoodJob(1,"alert('test');");

或两者都测试。
function doGoodJob(someId,callbackFunction)
{
    var func = (typeof callbackFunction == 'function') ?
        callbackFunction : new Function(callbackFunction);

     func();
}

doGoodJob(1,function(){alert('callback');});
doGoodJob(1,"alert('test');");

10-06 09:58