Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当JS函数存储在带有参数的变量中时,请检查它_Javascript_Jquery - Fatal编程技术网

Javascript 当JS函数存储在带有参数的变量中时,请检查它

Javascript 当JS函数存储在带有参数的变量中时,请检查它,javascript,jquery,Javascript,Jquery,我当前将函数存储在变量中,然后调用它: var function_name = 'test_function'; // some other JS here if (typeof app[function_name] != 'undefined') { app[function_name]; } app.test_function = function() { alert('woo'); }; 这很好,但是如果我在函数名变量中存储参数呢?像这样: var

我当前将函数存储在变量中,然后调用它:

var function_name = 'test_function';


// some other JS here    


if (typeof app[function_name] != 'undefined') {
     app[function_name];
}


app.test_function = function() {
    alert('woo');
};
这很好,但是如果我在函数名变量中存储参数呢?像这样:

var function_name = 'test_function("mike")';


// some other JS here    


if (typeof app[function_name] != 'undefined') {
     app[function_name];
}


app.test_function = function(name) {
    alert(name);
};
这不起作用,因为应用程序[函数名称]的类型未定义。
我怎样才能做到这一点呢?

函数
名称应该/不会改变,但定义会改变

var function_name='test_function';
var-app={};
if(应用程序类型[功能名称]!=“未定义”){
应用程序[功能名称];
}
app.test_function=函数(名称){
警报(名称);
};

应用程序测试功能(“嘿”)
函数
名称应该/不会更改,但定义
会更改

var function_name='test_function';
var-app={};
if(应用程序类型[功能名称]!=“未定义”){
应用程序[功能名称];
}
app.test_function=函数(名称){
警报(名称);
};
应用程序测试功能(“嘿”)
'test_function(“mike”)
不是有效的函数名

您的逻辑需要更改为

var function_name='test_function(“mike”);
var-app={};
app.test_function=函数(名称)
{
console.log(名称)
};
var split=function_name.split(/[()]/);
var funName=split[0];
var参数=[];
if(funName!=函数名)
{
var arguments=split[1]。split(“,”);
}
如果(应用程序的类型[funName]!=“未定义”)
{
app[funName].apply(null,参数);
}
测试函数(“mike”)
不是有效的函数名

您的逻辑需要更改为

var function_name='test_function(“mike”);
var-app={};
app.test_function=函数(名称)
{
console.log(名称)
};
var split=function_name.split(/[()]/);
var funName=split[0];
var参数=[];
if(funName!=函数名)
{
var arguments=split[1]。split(“,”);
}
如果(应用程序的类型[funName]!=“未定义”)
{
app[funName].apply(null,参数);

}
statement
app[function\u name]有什么用?你
应用程序
有什么?为什么不将参数与函数定义分开打包?然后,您可以使用相同的逻辑来查找函数并使用提供的参数委托调用函数,就像
lodash.curry
statement
app[function_name]的用法一样?你
应用程序
有什么?为什么不将参数与函数定义分开打包?然后,您可以使用相同的逻辑查找函数,并使用提供的参数委托调用函数,就像
lodash.curry