javascript如何从字符串中创建运算符

时间:2015-12-02 07:18:05

标签: javascript

是否可以将运算符类型的字符串变为运算符

<script>
  var operator        = $(this).val();  returns a string eg) + or -
  var quantity        = 5 operator 1;
</script>

目前我正在使用开关

3 个答案:

答案 0 :(得分:1)

可能,在某种程度上,通过eval,但请参阅警告。例如:

var result = eval("5 " + operator + " 1"); // 6 if operator is +

eval的问题在于它是一个完整的JavaScript评估者,因此您必须非常确定内容在您的控制之下。例如,用户提供的内容是您必须非常非常谨慎的。

或者,只需执行switch

switch (operator) {
    case "+":
        result = 5 + 1;
        break;
    case "-":
        result = 5 - 1;
        break;
    case "/":
        result = 5 / 1;
        break;
    case "*":
        result = 5 * 1;
        break;
    // ...and so on, for your supported operators
}

答案 1 :(得分:1)

绝对最简单的方法是使用if:

var operator = $(this).val(); // returns a string eg) + or -
var quantity;
if(operator === '-') {
    quantity = 5 - 1;
} else if(operator === '+') {
    quantity = 5 + 1;
}

您也可以使用eval函数,但很少推荐使用eval,在这种情况下并不值得。

答案 2 :(得分:0)

没有。最简单的方法是使用eval

var quantity = eval("5 " + operator + " 1");

但这被认为是一种不好的做法。 Eval是邪恶的。您不仅会遇到安全问题,还会降低代码的执行速度。

相反,这种方法更好更安全:

var operators = {
  "+": function(a, b) { return a + b; };
  "-": function(a, b) { return a - b; };
};

var operatorFunction = operators[operator];
if (operatorFunction) {
  var quantity = operatorFunction(5, 1);
}