如何根据变量内容运行相应函数?
我写了几个函数 funA(x)、funB(x)、funC(x)、funD(x)、funE(x)、funF(x),我现在有个需求,根据某个参数str,实现不同的计算。比如当 str=‘abc’ 时,能执行 x→funA(x)→funB(x)→funC(x)→y ,当 str‘ace’ 时,能执行x→funA(x)→funC(x)→funE(x)→y 。
function fun_abc(x)
{
var a = funA(x);
var b = funB(a);
var c = funC(b);
var y = c;
return y;
}
我知道可以写一个 switch 根据 str 做 case,跳到不同的 fun_XXX() 中,但是这样不灵活。我最终目的是希望有一个数组,数组中按顺序写着不同的函数名,调用时输入x,从数组中第一个元素对应的函数一直运行到最后一个函数,输出最终结果y。
是否有其他办法能简写?或者能做到自由组合,比如直接根据变量执行同名函数,类似 funstr='abc' 时,运行类似 funstr(x) 执行的就是 function abc(x)?
js 或 php 相关语法都可以。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我来举个例子,eval太粗暴了。。。大兄弟来看看我这个
举个例子,类似思路可以自由发挥
@不爱吃西红柿的鱼 的基础上改进下
每次call
run
函数的时候,都要生成四个函数和一个map,比较费开销。可以拎到run
外面。用
reduce
代替forEach
最简单,eval
麻烦点{'abc': fabc}
思路很简单,
php
和node
我都贴个示例代码吧php
版本node
版本把该定义的函数都放在一个对象里,设置好返回值在去调用不就行啦;
var ab={