是否可以将运算符类型的字符串变为运算符
<script>
var operator = $(this).val(); returns a string eg) + or -
var quantity = 5 operator 1;
</script>
目前我正在使用开关
答案 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);
}