我在这里看到了多个性质相似的问题,但没有一个问题适用于我所拥有的特定问题(我使用的是 node.js)。因此,例如,在此处使用此代码。
function command_call(message, socket) {
if (message.length > 1){
var func = message[0];
var string = message.slice(1);
var string = string.join(' ')}
else{
var func = message[0];
var string = '';};
if(func[0] == '$') {
(eval(func.slice(1)))(string, socket);};
};
function say(string, socket){
socket.write(string)};
如果传递给 command_call 的消息是“$say hi”,函数 say 将被调用并返回“hi”。这很好用,但是,如果放入 eval 的函数不存在,它就会崩溃。例如,如果传递给 command_call 的消息是“$example blah”,它将尝试评估“example”。基本上我需要它在评估函数之前检查函数是否存在。是的,我想使用 eval,除非在 Node 中有更好的方法来完成它。同样,这是在 node.js 中
最佳答案
你应该创建一个函数对象并使用索引符号:
var methods = {
$say: function() { ... }
};
if (!methods.hasOwnProperty(func))
// uh oh
else
methods[func]();
关于javascript - 从传递给函数的字符串调用 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18688603/