[JavaScript] if문과 화살표 함수에서 중괄호 생략의 차이

조정현·2025년 1월 11일

코테 풀다가 착각하고 있던 아주 기초적인 사실이 있어 기억할 겸 정리해두기로 한다.
if문 중괄호 생략과 화살표 함수 중괄호를 생략할 때와 혼동하여 사용하고 있던 것...!

잘못 짰던 코드

function solution(date1, date2) {
    for (let i = 0; i < date1.length; i++) {
        if (date1[i] < date2[i]) 1;
        if (date1[i] > date2[i]) 0;
    }
    return 0;
}

이렇게 짜도 문법적 오류는 없다.
하지만 각 if문의 단일 명령문 1과 0은 그저 1과 0으로 평가될 뿐, 아무일도 일어나지 않는다.
어떤 값을 넣어도 걍 0만 반환되는거임...
심지어 if문이 멈추지도 않음. if문 두 개가 연달아 실행되기만 한다.

조건에 맞게 1이나 0이 반환되게 하려면 아래와 같이 수정해야 한다.

function solution(date1, date2) {
    for (let i = 0; i < date1.length; i++) {
        if (date1[i] < date2[i]) return 1;
        if (date1[i] > date2[i]) return 0;
    }
    return 0;
}

이것도 착각하고 있던건데, 함수 내부에서 for문과 if문 사용시, if문이 조건을 만족하여 return을 만나는 순간 함수는 종료되며 이후의 i는 비교되지 않는다.

근데 결과적으로 위 문제는 날짜를 new Date(date1)로 바꿔 비교연산 하는게 제일 간단한 방법이었음.

여튼 화살표 함수와 차이가 헷갈려서 채찌피티 선생님에게 질문 러쉬를 날렸고 다신 까먹지 않게 정리해두려 글을 썼다.

if문과 화살표함수에서 중괄호 생략의 차이

if문과 화살표 함수는 중괄호 내부의 명령문이 한 줄짜리일 때 중괄호를 생략할 수 있다.
그런데 여기에서 if문과 화살표 함수의 중요한 차이점이 있으니...

  • if문 -> return 키워드가 없으면 명령문이 반환하지 않음
  • 화살표함수 -> return 키워드 없이도 암묵적 반환(implicit return)이 가능함

화살표함수에서 당연하게 중괄호 생략하고 쓰다보니 if문과 혼동해버렸는데, 이를 꼭 기억하도록 하자...

0개의 댓글