[프로그래머스 / Javascript] OX퀴즈

TED·2023년 11월 14일
0

Javascript CodingTest

목록 보기
49/63

< 오늘의 문제 >

OX퀴즈

function solution(quizList) {
    let result = [];
    
    for(let quiz of quizList) {
        // 각 퀴즈를 '=' 기준으로 나눈다.
        let [expression, answer] = quiz.split('=');
       // eval 함수를 사용하여 표현식을 계산하고, 결과가 주어진 답과 동일한지 비교.
        if(eval(expression) === Number(answer)) result.push('O');
        else result.push('X');
    }
   return result;
}
  • 나의 풀이
    let [expression, answer] = quiz.split('=');:
    각 quiz를 '=' 기호를 기준으로 나누어, expression과 answer을 추출.
    예를 들어, "3 - 4 = -1"이라는 문자열이 있다면, expression은 "3 - 4 "이고, answer는 " -1"이 된다.
    if(eval(expression) === Number(answer)) result.push('O');:
    eval 함수를 사용하여 expression을 계산하고, 그 결과가 Number(answer) (문자열 answer를 숫자로 변환한 값)와 같은지 비교

  • 포인트
    eval은 문자열을 코드로 실행하는 강력한 함수므로, 여기서는 간단한 수식을 계산하기 위해 사용되었으나, 보안상의 위험이 있을 수 있다. 특히 사용자 입력을 처리할 때는 주의해야한다. 이런 간단한 + - 의 수식의 문제에 쓰일때는 문제없다..길게 풀어말하자면

eval 함수는 JavaScript에서 제공하는 내장 함수로, 문자열로 된 JavaScript 코드를 실행할 수 있게 해준다.
이 함수는 주어진 문자열을 JavaScript 코드로 간주하고, 해당 코드를 실행한 결과를 반환한다.

let result = eval("2 + 2"); // 4

유연성 : eval 함수는 매우 유연하며, 거의 모든 종류의 JavaScript 표현식이나 문장을 실행할 수 있다.

보안 위험 : eval은 실행하는 코드가 무엇인지 정확히 알 수 없기 때문에 보안상 위험을 가질 수 있다.
특히 사용자로부터 입력받은 데이터를 eval로 실행하는 경우, 악의적인 코드가 실행될 가능성이 있어 매우 위험할 수 있다.

성능 문제 : eval 함수는 최적화가 어렵기 때문에 성능 문제를 일으킬 수 있다.
JavaScript 엔진은 eval을 통해 실행되는 코드를 미리 알 수 없으므로, 최적화 과정에서 제외되기 쉽다.

대안 사용 : 가능하면 eval 대신 다른 방법을 사용하는 것이 좋다.
예를 들어, 함수를 동적으로 생성하고 실행해야 하는 경우 Function 생성자나 다른 패턴을 사용할 수 있다.

eval은 간단하고 유연하지만 위험할 수 있는 도구다.
따라서 신중하게 사용하고, 안전한 대안이 있을 경우 그것을 사용하는 것이 좋다.

profile
컴맹 개발 입문자

0개의 댓글