string으로 되어있는 수식 계산하기
const string = '2 + 5';
위처럼 수식이 문자로 주어졌을 경우, 계산하는 방법은 여러개가 있다.
MDN 보니까 악의적인 코드로 사용되거나 해킹에 관한 위험이 따르는 함수라는 것 같다.
const string = '2 + 5';
eval(str);
// 7
왠만하면 사용하지 말 것! (사용될 일도 없다는 듯...)
eval() 함수를 대체할 수 있는 문법으로 어떤 문자열도 함수로 바꿀 수 있다.
const string = '2 + 5';
new Function(`return ${string}`)()
// 7
내가 사용한 방법이기도 하다😅
주어진 수식이 짧고 연산자도 한정적일 경우 괜찮지만, 수식이 길고 숫자 연산자도 여러개라면 코드가 더 길어질 수 있다.
const string = '2 + 5';
const [a, op, b] = string.split(' '); // ['2', '+', '5']
return op == '+' ? Number(a)+Number(b) : op == '-' ? Number(a)-Number(b) : Number(a)*Number(b)
// 7