如何通过名称作为字符串从函数中引用子函数

谁能告诉我eval在这段代码中我可以用什么来代替邪恶?


var x = function(funcName) {

    function funcA () {

        console.log("a");

    }

    

    function funcB () {

        console.log("b");

    }   

    

    var funcToRun = eval(funcName);

    return funcToRun();

};


x("funcA");

x("funcB");

我见过很多不同的解决方案,但似乎没有一个适合这种情况。本质上,我需要能够将字符串作为要运行的子函数的“配置”传递给函数。我无权访问调用的代码x,我刚刚被告知只能在调用中配置原始值和字符串值。


PS 这是实际功能的超级简化版。


冉冉说
浏览 122回答 1
1回答

蝴蝶不菲

您可以只创建一个对象并将这些函数添加为属性,然后您可以使用字符串访问这些属性。var x = function(funcName) {  function funcA() {    console.log("a");  }  function funcB() {    console.log("b");  }  const fs = {    funcA,    funcB  }  var funcToRun = fs[funcName]  return funcToRun();};x("funcA");x("funcB");
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript