자바스크립트 조건문 중첩, 조건부 실행 등
조건문의 중첩
조건문안에 조건문을 사용하는 방법
예시
let age = 20;
let gender = "여성";
미성년자 구분
if(age >= 18) {
if (gender === "여성") {
console.log("성인 여성입니다.);
}
else {
console.log("성인 남성입니다.");
}
else {
if (gender === "여성") {
console.log("미성년 여성입니다.");
}
else {
console.log("미성년 남성입니다.");
}
}
이런 식으로 중첩 조건문을 작성할 수 있다.
하지만 이렇게 자주 작성하는 것은 가독성에 좋지 않기 때문에 추천하는 방법은 아니다.
필요할 때만 가끔 쓰도록 하자.
조건부 실행
특정한 경우에만 실행하는 것
예시
let x = 10;
(x > 10) && console.log("x는 양수입니다.");
코드의 의미는 앞에 조건을 충족하면 && 뒤에 console.log를 실행하라 라는 의미이다.
기존의 조건문과 살짝 다른 모습인데
기존의 조건문으로 바꿔 적으면
let x = 10;
if(x > 10) {
console.log("x는 양수입니다.");
}
이 코드와 동일하다.
위에 코드는 상당히 요즘코드다운 방식이다. 자주 써도 좋을 듯하다.
삼항연산자와 단축평가
예시
let y;
let z = y || 20;
console.log(z);
실행하면 20이 출력된다.
이 코드는 어떤 의미일까?
해석해 보자면 y는 현재 선언만 해두고 값이 undefined인 상태이다.
따라서 아래 z 조건은 y가 undefined상태이면
기본값으로 || 우측에 있는 20으로 설정하라는 코드이다.
falsy 한 값, truthy 한 값
이게 무슨 뜻이냐
if문에 조건에는 true or false의 값이 들어가야 중괄호 안에 코드를 실행하는 것인데
조건뿐만 아니라 그냥 숫자, 문자 등이 들어갈 수 있는데
그것들이 truthy 하냐 falsy 하냐 찾는 것이다.
예시
if (0) {
console.log("hi");
}
if ("") {
console.log("hi");
}
if (null) {
console.log("hi");
}
if (undefined) {
console.log("hi");
}
if (NaN) {
console.log("hi");
}
if (false) {
console.log("hi");
}
if (true) {
console.log("hi");
}
이렇게 전부 작성하고 실행한다면 hi문구가 한 번만 출력이 된다.
이게 무슨의미냐하면 마지막 true조건을 제외하고 나머지는 전부 falsy 한 값이라고 생각하면 된다.