https://programmers.co.kr/learn/courses/30/lessons/67257
function solution(expression) {
let answer = [];
const cases = [
['-', '*', '+'],
['-', '+', '*'],
['*', '-', '+'],
['*', '+', '-'],
['+', '-', '*'],
['+', '*', '-']
];
for(let i = 0; i < cases.length; i++) {
let arr = expression.split(/(\D)/);
for(let j = 0; j < 3; j++) {
while(arr.includes(cases[i][j])) {
let index = arr.indexOf(cases[i][j]);
arr.splice(index-1, 3, (new Function(`return ${arr.slice(index-1, index+2).join('')}`))());
// index-1 인덱스에서 3개 삭제 후 new Function 반환값 추가
}
}
answer.push(arr);
}
return Math.max(...answer.map(num => Math.abs(num)));
}
new Function ([arg1[, arg2[, ...argN]],] functionBody)
JavaScript Function
var x = 10;
function createFunction1() {
var x = 20;
return new Function('return x;'); // 여기서 |x|는 전역 범위에 있는 |x|를 참조함.
}
function createFunction2() {
var x = 20;
function f() {
return x; // 여기서 |x|는 위의 지역에 있는 |x|를 참조함.
}
return f;
}
var f1 = createFunction1();
console.log(f1()); // 10
var f2 = createFunction2();
console.log(f2()); // 20