如何执行Map对象中作为值存储的函数
解决方案
你通过myMap.get("myKey")获取到的返回值本身就是完整的函数对象,不需要额外用new Function做二次包装,直接加括号传入参数即可调用。
正确调用代码示例
const myMap = new Map(); myMap.set("myKey", function(argument) { console.log(argument); }); // 取出存储的函数 const targetFn = myMap.get("myKey"); // 直接调用,传入所需参数 targetFn("测试输出内容");
上述代码运行后,控制台会打印测试输出内容。
可选兼容处理
如果无法确定对应key是否存在、或存储的value一定是函数,可以提前做类型判断,避免调用报错:
const targetFn = myMap.get("myKey"); if (typeof targetFn === "function") { targetFn("测试输出内容"); }
原错误写法原因说明
new Function构造函数的作用是接收字符串格式的函数体代码来生成新函数,你传入的是已经实例化完成的函数对象,不符合该构造函数的入参要求,因此会抛出语法错误。
内容的提问来源于stack exchange,提问作者user1977132
相关产品推荐
相关产品推荐

