이번 강의는 세션중에 가장 길었던 부분이였다.
분기처리에 관해 배웠는데, 내가 잘 사용하고 있던 부분도 있었고
이렇게 하면 안되는구나를 배웠다.
어쨌든 결론은 내가 읽기 쉬운 코드는 남도 읽기 쉽고
쉽게 짠 코드가 좋은것!
//'값'이 들어가야하는 자리에 '식'이 들어감
<div id={if (condition) {'msg'}}> Hello World</div>
//삼항연산자는 '값'으로 귀결되기 때문에 사용가능
<div id={condition ? 'msg' : null}> Hello World</div>
if (conditionOne) {return <span>one</span>;}
{conditionOne && <span>one</span>}
//참->참=>리턴
true && true && '도달 O'
//참->거짓 =>리턴
true && false && '도달 X'
//거짓 -> 거짓 => 리턴
false || false || '도달 O'
//참 -> 즉시 리턴
true || true || '도달 X'
function favoriteDog(someDog){
let favoriteDog;
if(someDog){
favoriteDog = dog;
}
else {
favoriteDog = '냐옹';
}
return favoriteDog + '입니다.';
}
//someDog가 들어있으면 True, someDog출력
//someDog가 null이거나 undefined면 냐옹 출력
function favoriteDog(someDog){
return (someDog || '냐옹') + '입니다.';
}
원래코드
const handleInputName = e => {
setName(e.target.value);
gender !== "" && name !== "" && grade !== "" && targetSe !== ""
? setIsActive(true)
: setIsActive(false);
returnActive() ? setIsActive(true) : setIsActive(false);
};
const handleInputBelong = e => {
let value = e.target.value;
value === null || value === "" || value === " "
? setBelong("-")
: setBelong(e.target.value);
};
수정 후 코드
const returnActive = () => {
return gender && name && grade && targetSe;
};
const handleInputName = e => {
setName(e.target.value);
returnActive() ? setIsActive(true) : setIsActive(false);
};
const handleInputGrade = e => {
let value = e.target.value;
value ? setGrade("-") : setGrade(value);
};
//사용자에게 인사를 하는 함수
//단, 미성년자가 오면 report필요
function getHelloCustomer(user){
if (user.age < 20){
report(user)
}
else{
return '안녕하세요.'
}
}
//위와 같은 경우 미성년자 고객에겐 인사가 리포트가 안되는 이슈가 있음 -> 로직 문제
//아래와 같이 작성하면 의도한 대로 동작함.
function getHelloCustomer(user){
if (user.age < 20){
report(user)
}
return '안녕하세요.'
}
function loginService(isLogin, user) {
if (!isLogin) {
if (checkToken()) {
if (!user.nickName) {
return registerUser(user);
} else {
refreshToken();
}
} else {
throw new Error("No Token");
}
}
}
/*
위와 같은 코드를 Early Return을 사용하여
같은 로직이니만 아래처럼 직관적으로 바꿀 수 있다.
*/
function loginService(isLogin, user) {
if (isLogin) {
return;
}
if (!checkToken()) {
throw new Error("No Token");
}
if (!user.nickName) {
return registerUser(user);
}
login();
}
function login(){
refreshToken();
return "로그인 성공";
}
function safeParseInt(number,radix){
return parseInt(number, radix || 10);
}
function safeParseInt(number,radix){
return parseInt(number, radix ?? 10);
}
!(A && B) == !A || !B