0

在我的app.js我定义了这样的函数:

var func1 = function(v1,v2,v3) {
  .
  .
}

var func2 = function(v1,v2,v3) {
  .
  .
}

在我的controller.js

var action = "";

if(..) { action = 'func1';}
else {action = 'func2'}

action(a1,a2,a3);

但是,我收到一个错误,说动作不是函数。我怎样才能像这样访问func1和 func2``?

4

2 回答 2

4

尝试删除引号,例如,更改:

if(..) { action = 'func1';}
else {action = 'func2'}

if(..) { action = func1;}
else {action = func2;}

补充:当您为 . 添加引号时,您正在为您的操作变量分配字符串func1,您可以检查它:

var func1 = function(v1,v2,v3) {
  alert("first");
};
var test_this = func1;
console.log( typeof test_this); //gives you function

然而

var test_this = 'func1'; //with quotes added
console.log( typeof test_this); //gives you string
于 2013-04-25T05:16:20.837 回答
1

您正在尝试从字符串访问该函数。我不是专家,但你可以试试

if (..) {
    func1(a1, a2, a3);
} else {
    func2(a1, a2, a3);
}
于 2013-04-25T05:16:59.097 回答