[TIL] KDT Clouding APP - Javascript Basic 3

조건문

중첩 if문은 지양하고, 구현 시에는 최대한 빨리 중첩 구문에서 나올 수 있는 구조; Guard Clauses 형태로 구현할 것

const 함수 = (인자) => {
    if (조건문(인자)) return 1;
    if (조건문(인자)) return 2;     // else if (X)
    return 3;
};

함수(2)

Foreach

  • 잠재적인 순환 횟수 오류를 예방
  • 코드를 더 직관적으로 읽히게; 가독성이 높아서 본문 로직에 더 집중할 수 있게함.

1) for …of 문 사용 가능한 객체 타입: Array, Set, String

const strFoo = 'apple'
for (const i of strFoo) {
    console.log(i);
}

const setFoo = new Set();
setFoo.add('apple');
setFoo.add('banana');
for(const i of setFoo) {
    console.log(i);
}

2) for …in 문

  • 보통 Object 타입을 순회
const foo = {
    apple: 100,
    banana: 300,
};

for(let key in foo) {
    console.log(key);   // 'apple', 'banana'
}

throw, Error, try…catch 그리고 finally

catch문이 있다면, catch문 진입
catch문이 없다면, 종료

1) Error 객체 사용

const foo = () => {
    console.log(1);
    
    const customError = new Error();
    customError.name = '(-101 : No User)';
    customError.message = '등록된 유저가 없습니다';
    throw customError;
    
    console.log(2); // 실행되지 않는다.
};

foo();

2) catch, finally 사용

const foo = (value) => {
    if(value < 3) throw value;
    else console.log(value);
}

const bar = (value) => {
    try {
        foo(value);
    } catch(catchId) {
        console.log('exception occured!', catchId);
    } finally {
        console.log('finally');
    }
};

bar(2);

try…catch문의 적용

예기치 못하는 상황에 대응하기 위함.
모든 경우에 try…catch문을 넣는 것은 비효율적이지만,
아래와 같은 경우에는 넣는 것이 좋다!
(외부에 의존도가 있는 로직들…내가 제어할 수 있는 부분이 아닌 것들 위주!)

  • network 에러 발생에 대비
  • 의존도가 있는 데이터가 유효하지 않을 경우 대비
  • 사용자가 잘못 입력하는 경우에 대비

Categories:

Updated: