这听起来像是初步的问题,但我无法解决。我不想使用eval()。下面是我的代码

        var inputValue = 75;
        var functionName = 'Math.Sin';
        alert (functionName(inputValue));


我的意图是计算functionName(inputValue)的数学值。 functionName和inputValue都存储在字符串中(当前的设置ID是设计好的,因此我无法更改)。 functionName和inputValue是变量,它们的内容将根据上下文而变化。

我可以得到有关如何计算价值的建议吗?

最佳答案

您可以将实际的函数作为键值对存储在一个对象中,如下所示

var functions = {
    "Math.Sin"   : Math.sin,
    "Math.CoSine": Math.cos,
    "Math.Tan"   : Math.tan
};

var inputValue = 75;
var functionName = 'Math.Sin';
alert (functions[functionName](inputValue));
# -0.38778163540943045


如果inputValue以度为单位,则可以将其转换为这样的弧度

function convertToRadian(degree) {
    return degree * Math.PI / 180.0;
}

inputValue = convertToRadian(inputValue);

09-27 10:55