* 단축평가(short-circuit evaluation)
- AND
true && true && '도달 성공' // '도달 성공'
true && false && '도달 x' // false
- false에 의해 막힘
- false가 확인되어 해당 값은 false
- OR
false || false || '도달 성공' // '도달 성공'
true || true || '도달 실패' // true
- true에 의해 막힘
- 첫번째 값이 참이므로 뒤에 값은 확인하지 않는다.
* 단축평가하기 좋은 경우
- 기본값(default value)을 표현할 때 가장 편리하다.
* 단축평가 예시코드 (OR)
// before
function fetchData() {
if (state.data) {
return state.data;
} else {
return 'Fetching...';
}
}
// 삼항연산자로 단축
function fetchData() {
return state.data ? stata.data : 'Fetching...';
}
// 단축평가로도 단축가능 (or단축평가)
function fetchData() {
return state.data || 'Fetching...';
}
* 단축평가 예시코드 (OR)
// before
function favoriteDog(someDog) {
let favoriteDog;
if (someDog) {
favoriteDog = dog;
} else {
favoriteDog = '냐옹';
}
return favoriteDog + '입니다.';
}
favoriteDog() // 냐옹
favoriteDog('포메') // 강아지입니다.
// 단축평가
function favoriteDog(someDog) {
return (someDog || '냐옹') + '입니다.';
}
- 냐옹은 무조건 Truthy이므로 someDog가 False면 호출된다.
- 인자를 아무것도 주지않아도 처리된다. undefined는 Falsy로 기결되기 때문이다.
* 단축평가 예시코드 (AND)
- BAD CODE
const getActiveUserName(user, isLogin) {
if (isLogin) {
if (user) {
if (user.name) {
return user.name
} else {
return '이름없음'
}
}
}
}
- GOOD CODE
const getActiveUserName(user, isLogin) {
if (isLogin && user) {
return user.name || '이름없음'
}
}
- isLogin이 true이여도 user의 값이 true인지 한번 더 확인해야하는데 OR논리연산자를 이용해서 단축평가 한다.
- && : 둘다 참이여야 한다.
- return반환값중 user.name이 없으면 '이름없음'을 반환한다.
- 결론
항상 코드를 논리연산자로 계속 고쳐서 보는 연습을 해보도록 하자!
'Study > JavaScript(Clean code)' 카테고리의 다른 글
[JavaScript][clean-code] Early Return (0) | 2022.05.30 |
---|---|
[JavaScript][clean-code] else if & else피하기 (0) | 2022.05.29 |
[JavaScript][clean-code] Truthy & Falsy (0) | 2022.05.29 |
[JavaScript][clean-code] 삼항연산자 (0) | 2022.05.29 |
[JavaScript][clean-code] 매개변수의 순서가 경계이다. (0) | 2022.05.28 |