클린코드 자바스크립트 4-2 분기 다루기(truthy & falsy, 단락 회로 평가)
Clean Code JS 강좌는 여러 절로 구성되어 있습니다.
- 클린코드 자바스크립트 1-1 변수 다루기(let & const 사용, function scope & block scope)
- 클린코드 자바스크립트 1-2 변수 다루기(전역 공간 사용 최소화,임시 변수 제거하기)
- 클린코드 자바스크립트 1-3 변수 다루기(호이스팅)
- 클린코드 자바스크립트 2-1 타입 다루기(타입 검사)
- 클린코드 자바스크립트 2-2 타입 다루기(undefined & null, eqeq 줄이기)
- 클린코드 자바스크립트 2-3 타입 다루기(형변환 주의하기, isNaN)
- 클린코드 자바스크립트 3-1 경계 다루기(min-max,begin-end,first-last,접두사와 접미사, 매개변수 순서가 경계)
- 클린코드 자바스크립트 4-1 분기 다루기(값식문, 삼항 연산자)
- 클린코드 자바스크립트 4-2 분기 다루기(truthy & falsy, 단락 회로 평가)
- 클린코드 자바스크립트 4-3 분기 다루기(else if & else 피하기, Early Return, Default case 고려하기)
- 클린코드 자바스크립트 4-4 분기 다루기(Default case 고려하기, Nullish coalescing operator, 드모르간 법칙)
- 클린코드 자바스크립트 5-1 배열 다루기(JS의 배열은 객체다, Array.length, 배열 요소에 접근하기)
- 클린코드 자바스크립트 5-2 배열 다루기(유사 배열 객체, 불변성, for문 배열 고차 함수로 리팩토링)
- 클린코드 자바스크립트 5-3 배열 다루기(배열 메소드 체이닝 활용, map vs forEach, continue&break)
- 클린코드 자바스크립트 6-1 객체 다루기(Object Destructuring, Object.freeze)
- 클린코드 자바스크립트 6-2 객체 다루기(Prototype 조작 지양하기, hasOwnProperty, 직접 접근 지양하기)
- 클린코드 자바스크립트 7-1 함수 다루기([함수,메서드,생성자], argument & parameter,복잡한 인자 관리하기)
- 클린코드 자바스크립트 7-2 함수 다루기(default value, Rest Parameters, void & return, 화살표 함수)
- 클린코드 자바스크립트 7-3 함수 다루기(Callback Function, 순수 함수, Closure)
분기 다루기 😎
truthy & falsy👍
if ("string".length) {
}
if (10) {
}
if (boolean) {
}
// truthy
true;
{
}
[];
42;
("0");
("false");
new Date();
3.14 - 3.14;
Infinity - Infinity;
// falsy
false;
null;
undefined;
0;
0n;
NaN;
("");
단락 회로 평가👍
true && true && "도달O";
true && false && "도달X";
false || false || "도달O";
false || true || "도달X";
function fetchDate() {
if (state.data) {
return state.data;
} else {
return "Fetching....";
}
}
return state.data ? state.data : "Fetching..."; // 삼항 연산자 이용
return state.data || "Fetching..."; // 단락회로 평가 이용
// 안 좋은 예
function favoriteDog(someDog) {
let favoriteDog;
if(someDog) {
favoditeDog = someDog;
} else {
favoriteDog='냐옹'
}
return favoriteDog;
})
// 좋은 예
function favoriteDog(someDog) {
return someDog||'냐옹';
}
favoriteDog() // => 냐옹
favoriteDog('뽀삐') // => 뽀삐
// 안 좋은 예
const getActiveUserName = (user, isLogin) {
if(isLogin) {
if(user){
is(user.name){
return user.name;
} else {
return '이름없음';
}
}
}
}
// 좋은 예
const getActiveUserName = (user, isLogin) {
if(isLogin && user) {
if(user.name) {
return user.name;
} else {
return '이름없음';
}
}
}
// 더 좋은 예
const getActiveUserName = (user, isLogin) {
if(isLogin && user) {
return user.name || '이름없음
}