带有参数的函数的Javascript eval()

时间:2010-10-14 17:39:22

标签: javascript arguments eval

我该怎么做?

function myUIEvent() {
    var iCheckFcn = "isInFavorites";
    var itemSrc = ui.item.find("img").attr("src");

    if (eval(iCheckFcn(itemSrc))) { alert("it's a favorite"); }

function isInFavorites(url) { return true; } // returns boolean

3 个答案:

答案 0 :(得分:6)

首先不要使用eval()

function myUIEvent() {
  var iCheckFcn = isInFavorites;
  var itemSrc = ui.item.find("img").attr("src");

  if (iCheckFcn(itemSrc)) { alert("it's a favorite"); }
}

函数是对象,您可以将函数的引用分配给任何变量。然后,您可以使用该引用来调用该函数。

答案 1 :(得分:2)

最好的方式是Pointy描述的,或者你可以这样做:

if ( window[iCheckFcn](itemSrc) ) {
  alert("it's a favorite");
};

答案 2 :(得分:-1)

如果你在AngularJS环境中,就这么简单:

$rootScope.calculate = function(param1,param2)
{
    console.log(param1+param2);
}

var func = '$rootScope.calculate';
eval(func)(1,2);  //---> 3