javascript 中的动态运算符
Dynamic operators in javascript
我目前有一个很大的 switch 语句:
switch (arg) {
case '+':
equals = num1 + num2;
break;
case '-':
equals = num1 - num2;
break;
case '*':
equals = num1 * num2;
break;
case '/':
equals = num1 / num2;
break;
case '%':
equals = num1 % num2;
break;
default:
error();
return;
}
我想知道我是否可以做类似
的事情
equals = num1 /** Do the operation defined by a variable */ num2
或类似的东西,所以我没有大的 switch 语句我什至不确定从哪里开始寻找这样的东西,因为像“js 中的动态运算符”之类的东西没有提出我正在寻找的东西,任何帮助受到赞赏。
您可以尝试使用带有方法的对象。
const operations = {
"+": (a, b) => a + b,
"-": (a, b) => a - b,
"*": (a, b) => a * b,
"/": (a, b) => a / b,
"%": (a, b) => a % b,
};
const action = (op, a, b) => operations[op](a, b);
console.log(action("+", 5, 6));
console.log(action("/", 4, 2));
正在动态创建函数。有关详细信息和安全问题,请参阅 MDN。
或者,您可以动态创建函数。
function createOperation(op) {
return new Function('return arguments[0]' + op + 'arguments[1]');
}
const add = createOperation('+');
const sub = createOperation('-');
console.log(add(5, 6))
console.log(sub(5, 2))
我目前有一个很大的 switch 语句:
switch (arg) {
case '+':
equals = num1 + num2;
break;
case '-':
equals = num1 - num2;
break;
case '*':
equals = num1 * num2;
break;
case '/':
equals = num1 / num2;
break;
case '%':
equals = num1 % num2;
break;
default:
error();
return;
}
我想知道我是否可以做类似
的事情equals = num1 /** Do the operation defined by a variable */ num2
或类似的东西,所以我没有大的 switch 语句我什至不确定从哪里开始寻找这样的东西,因为像“js 中的动态运算符”之类的东西没有提出我正在寻找的东西,任何帮助受到赞赏。
您可以尝试使用带有方法的对象。
const operations = {
"+": (a, b) => a + b,
"-": (a, b) => a - b,
"*": (a, b) => a * b,
"/": (a, b) => a / b,
"%": (a, b) => a % b,
};
const action = (op, a, b) => operations[op](a, b);
console.log(action("+", 5, 6));
console.log(action("/", 4, 2));
正在动态创建函数。有关详细信息和安全问题,请参阅 MDN。
或者,您可以动态创建函数。
function createOperation(op) {
return new Function('return arguments[0]' + op + 'arguments[1]');
}
const add = createOperation('+');
const sub = createOperation('-');
console.log(add(5, 6))
console.log(sub(5, 2))