[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 에러 발생에 대비
- 의존도가 있는 데이터가 유효하지 않을 경우 대비
- 사용자가 잘못 입력하는 경우에 대비