[JS] 삼항 연사자 내부에 for반복문 적용

J.A.Y·2024년 1월 6일
0

javaScript

목록 보기
4/21

혹시 삼항 연산자 안에 for 반복문을 사용하려다 실패한 적이 있으신가요?

며칠 전에 <prompt 창에서 숫자를 입력 받아 2 또는 3의 배수의 총합을 구하는 것>을 구현해보다가, 삼항 연산자 내부에 for 반복문을 사용하려면 어떻게 해야 하는지 알게 되었습니다. 그래서 궁금하신 분들을 위해 제가 찾은 방법을 공유하고자 합니다.


<prompt 창에서 숫자를 입력 받아 2 또는 3의 배수의 총합 구하기>를 구현하면서 작성해 놨던 코드의 일부분을 삼항 연산자로 바꾸고 for 반복문을 적용해봤습니다.

👉기존 코드:

//정수 n을 입력받아 2 또는 3의 배수의 총합 구하기
function sumN () {

    let n = prompt("값 'n'을 입력해주세요.(0 < n < 100)");
    let result = 0;

    function sum (n) {
        if (n <= 0 || n >= 100) {
            alert("'n의 값을 올바르게 입력해주세요. (0 < n < 100)");
        } else {
            for (let i = 0; i <= n; i++) {
                if(i%2 === 0 || i%3 === 0) {
                   result += i;
                }
            }
            console.log(result)
        }
    } sum(n);
}

👉'if문'을 '삼항 연산자'와 'for문'으로 수정 후

function sumN() {
    let n = prompt("값 'n'을 입력해주세요.(0 < n < 100)");
    let result = 0;

    function sum(n) {
        n <= 0 || n >= 100
            ? alert("'n의 값을 올바르게 입력해주세요. (0 < n < 100)")
            : (() => {
                  for (let i = 0; i <= n; i++) {
                      if (i % 2 === 0 || i % 3 === 0) {
                          result += i;
                      }
                  }
                  console.log(result);
              })();
    } sum(n);
}
그러자 에러 발생😓..... ❗"삼항 연산자에 `for 반복문` 자체를 넣어 활용할 수 없음"❗

이유를 찾아보니 삼항 연산자는 단일 값을 생성하는 조건식에 적합하다고 합니다. 루프와 같은 다중문 블록이 아닌 간단한 표현식을 처리하도록 설계되었기 때문에 for 반복문 실행이 안 되는 것이었습니다.

💡하지만 아예 활용할 수 없는 것은 아님!

제 코드의 경우, IIFE(즉시 호출 함수 표현식)을 사용해주면 가능하다고 합니다.

그래서 수정해보니까 '성공!'

function sumN() {
    let n = prompt("값 'n'을 입력해주세요.(0 < n < 100)");
    let result = 0;

    function sum(n) {
        n <= 0 || n >= 100
            ? alert("'n의 값을 올바르게 입력해주세요. (0 < n < 100)")
            : (() => {
                  for (let i = 0; i <= n; i++) {
                      if (i % 2 === 0 || i % 3 === 0) {
                          result += i;
                      }
                  }
                  console.log(result);
              })();
    }
    sum(n);
}

🤔삼항 연산자를 이렇게 사용하는 경우가 흔한지는 모르겠지만, 삼항 연산자는 간단한 표현식만 처리되도록 만들어져 있다는 사실과, for반복분 적용하고 싶을 때는 즉시 실행 함수로 처리하면 된다는 사실을 새롭게 배울 수 있었어서 제겐 좋은 경험이 됐던 것 같습니다🙂.

profile
Done is better than perfect🏃‍♀️

0개의 댓글