Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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函数?_Javascript - Fatal编程技术网

用字符串调用javascript函数?

用字符串调用javascript函数?,javascript,Javascript,我有一个功能: var greet = function (name) { console.log("Hi " + name); } 如果我有一个字符串“greet('eric')”,是否可以将其转换为传递“eric”作为参数的函数调用?eval()是您的朋友! 我不确定我是否正确理解了您的问题,但您正在寻找函数吗 eval("greet('eric')"); 这和打字一样容易 eval("greet('eric')"); 无eval var greet = function (n

我有一个功能:

var greet = function (name) {
    console.log("Hi " + name);
}
如果我有一个字符串“greet('eric')”,是否可以将其转换为传递“eric”作为参数的函数调用?

eval()是您的朋友!

我不确定我是否正确理解了您的问题,但您正在寻找函数吗

eval("greet('eric')");

这和打字一样容易

eval("greet('eric')");

eval

var greet = function (name) {
      console.log("Hi " + name);
    },
    greetstr = 'greet("Eric")';

var greeter = greetstr.split('("');
window[greeter[0]]( greeter[1].replace(/\)|"/g,'') );
底线1:
底线2:避免这样的结构

只是为了确保你有所有的可能性@你的处置:
setTimeout(greetstr,0)

嗯,那里某处有一个
eval

你、我、他、她和他们都讨厌eval。总有别的办法

callMethod = function(def) {
    //all the variables are function references
    var approvedMethods = {greet: greet, love: love, marry: marry, murder: murder, suicide: suicide},
        split = def.split(/\(/); //split[0] contains function name, split[1] contains (unsplit) parameters

    //replace last ) and all possible string detonators left-over
    split[1] = split[1].replace(/\)$/, '').replace(/[\'\"]/g, '').split(','); //contains list of params

    if (!approvedMethods[split[0]])
        return 'No such function.';

    approvedMethods[split[0]].apply(window, split[1]);
}
//Called like this:
callMethod("greet('eric')");

将窗口引用替换为任何引用。

Oh完全忘记了eval()。“这不是反过来说的吗,它是邪恶的吗?”翁·艾瓦尔说,只有当你误用它时,它才是邪恶的。一千个尖叫的处女撕扯着他们的肉体的呼唤伴随着你的回答。如今,抨击学校似乎很流行。他们在许多方面可能是错误的,但在他们的时代(w3schools始于1999年),他们是许多人的重要信息来源。也许有一天他们会赶上的。我想eval()在这种情况下确实是我的朋友=)