JavaScript - 분기 다루기

category 프런트엔드/클린코드 2022. 4. 14. 20:21
728x90
반응형

값,식,문

  • 문법을 간과하는 경우가 있는데, 문법은 컴퓨터를 이해시켜야하기 때문에 중요하다.
  • 값과 식과 문을 구분한다.
// "값"이 들어가야하는 자리에 "식"이 들어감 (X)
<div id={if (condition) {"msg"}}>Hello World</div>

// 삼항연산자는 "값"으로 귀결되기 때문에 사용 가능 (O)
<div id={condition ? "msg" : null}> Hello World</div>
  • () : 함수, 우선순위
  • {} : 값과 식만 들어가야함.
  • 바로 리턴되는 분기문은 논리연산자를 사용해야한다.
if (conditionOne) {return <span>one</span>;}

// 간단한 연산을 활용한 방법
{conditionOne && <span>one</span>}


삼항 연산자 다루기

  • 피 연산자가 조건, 참일 때, 거짓일 때 세개 인것을 잊지말자.
  • 삼항연산자를 과도하게 중복해서 사용하는 경우를 피하자
    • 1. if를 사용하여 조건을 나누자
    • 2. else-if를 과도하게 사용하는 것 보다는 switch가 더 효과적
  • 조건이 여러개일 경우 가독성을 생각해서 작성하자
  • 반환 값이 없는 함수는 삼항연산자로 사용하지 말자


Truthy & Falsy

  • boolean 타입이 아니여도 참과 거짓으로 귀결되는 값이 있다.
  • null과 undefined를 검사할 때 유용하다.
  • 예시)
if (true)
if ({})
if ([])
if (42)
if ("0")
if ("false")
if (new Date())
if (-42)
if (12n)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)


단축평가 (short-circuit evaluation)

  • 단축 연산자를 사용하여 불필요한 분기문을 줄이자.
  • AND 연산자와 OR 연산자
//참->참=>리턴
true && true && '도달 O'

//참->거짓 =>리턴
true && false && '도달 X'
    
//거짓 -> 거짓 => 리턴
false || false || '도달 O'

//참 -> 즉시 리턴
true || true || '도달 X'

 

  • or연산자 : Default 값이 있을 때 사용하기 좋음.
function favoriteDog(someDog){
    let favoriteDog;
    if(someDog){
        favoriteDog = dog;
    }
    else {
        favoriteDog = '냐옹';
    }
    return favoriteDog + '입니다.';
}

//someDog가 들어있으면 True, someDog출력
//someDog가 null이거나 undefined면 냐옹 출력
function favoriteDog(someDog){
    return (someDog || '냐옹') + '입니다.';
}

 

Early Return

간단히 말해서 Nested If Statements(중첩 If문)를 지양하고 If 문을 쪼개서 리턴을 해주라는 이야기이다.

  • 하나의 로직에 많은 의존성을 담고 있을 때 사용한다.
  • 동작하지 않을 경우의 분기문을 작성해서 함수를 미리 종료시킨다.
  • 코드가 더 직관적으로 읽힌다.
function loginService(isLogin, user) {
  if (!isLogin) {
    if (checkToken()) {
      if (!user.nickName) {
        return registerUser(user);
      } else {
        refreshToken();
      }
    } else {
      throw new Error("No Token");
    }
  }
}


function loginService(isLogin, user) {
  if (isLogin) {
    return;
  }
  if (!checkToken()) {
    throw new Error("No Token");
  }
  if (!user.nickName) {
    return registerUser(user);
  }
  login();
}


부정 조건문 지양하기

  • 직관적이지 않은 코드이기 때문에 지양해야한다.
  • 프로그래밍 언어 자체가 if문에 긍정 조건이 오고 그 뒤에 else로 실행이 되기 때문에 굳이 뒤바꿔서 사용할 필요가 없다.


Default Case 고려하기

  • 함수를 작성할 때 매개변수가 없어도 동작하도록 해야 조금 더 안전한 코딩을 할 수 있다.
  • 디폴트 케이스를 넣어주면 사용자의 실수로 에러가 나는 것을 방지할 수 있다.
  • 만들어진 함수를 다시 만들어서 사용하는 것도 가능하다.
function safeParseInt(number,radix){
	return parseInt(number, radix || 10);	
}

 

명시적인 연산자 사용 지향하기

  • 괄호를 사용하여 우선순위를 만들자

 

Nullish coalescing operator

  • 0은 falsy라서 false로 리턴되는데, 다른 Falsy값을 제외하고 null과 undefined만 구분할 때 사용하면 좋다.
function safeParseInt(number,radix){
	return parseInt(number, radix ?? 10);	
}


드모르간의 법칙

다음과 같이 연산을 간단하게 할 수 있다.

!(A && B) == !A || !B

 

728x90
반응형

'프런트엔드 > 클린코드' 카테고리의 다른 글

JavaScript - 객체 다루기  (0) 2022.04.15
JavaScript - 배열 다루기  (0) 2022.04.15
JavaScript - 경계 다루기  (0) 2022.04.14
JavaScript - 타입 다루기  (0) 2022.04.14
JavaScript - 변수 다루기  (0) 2022.04.14