불리언
- Boolean 타입은 True, False 2개이고 이를 Flag로 쓰기도 함(On-Off로 구분)
- 이 때, 형 변환의 경우도 래퍼 객체(Boolean)으로 하면 변환도 가능함
- 그리고
!
, !!
를 통해서 Boolean으로 변환가능
- 논리적인 흐름을 제어할 때, True-False로 구분해서 제어함
논리 연산자(Logical Operator)
- 2가지 항이 있어야 비교할 수 있음
- 먼저 OR 연산자(
||
) 또는 이라고 할 수 있음, 참이 하나라도 나오면 무조건 참이 되는 연산자(하나라도 true면 뒤의 값은 볼 필요도 없음)
- AND 연산자(
&&
) 그리고 라고 할 수 있음, 모두 다 참이여야 참이 되는 연산자(그래서 앞서 false가 하나라도 있으면 뒤의 값은 볼 필요도 없음)
- NOT 연산자(
!
) 부정이라고 할 수 있음, 기존 값을 뒤집음
- 예시
const age;
const genderType = 'GIRL';
const isAdult = age > 19
const isGirl = genderType === 'GIRL';
age = 17
if (!isAdult || isGirl) {
console.log('여학생이다');
}
age = 20;
if (isAdult && isGirl) {
console.log('나는 성인이다!');
}
- 아래와 같이도 응용 가능(왜냐면 undefined가 되도 false로 귀결되어서
!!
연산으로 인해 아래와 같이 이름 없음이 나올 수 있음
function getName(firstName, lastName) {
const fName = firstName || '성 없음';
const lName = lastName || '이름 없음';
return '저는 ' + fName + ' ' + lName + '입니다';
}
console.log(getName('kevin', ));
== & === (비교 연산자)
- 동일, 동등, 일치 연산자라고 불림, equality라고 영어로 말함
==
는 느슨한 비교를, ===
는 엄격한 비교를 함, 그래서 ===
를 쓰는게 좋음
- 느슨한 비교는
'1' == 1
을 하면 형변환을 해서 같다고 처리해버림, 그래서 엄격한 비교를 추천하는 것
- 그래서 무조건 3개 쓰는걸 권장함
Truthy
- 원시값이든, 객체값이든 참으로 평가할 떄의 값을 Truthy라고 함
- 아래의 조건들이 참으로 평가되는 값을 의미함(즉, true처럼 돌아간다는 의미임)
- 단순히 조건문에만 해당하지 않고, 다양하게 상황에 따라서 적용될 수 있음
- 이처럼 참으로 평가되는 상황을 Truthy라고 함
if (true)
if ({})
if ([])
if (42)
if ("0")
if ("false")
if (new Date())
if (-42)
if (12n)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)
Falsy
- Falsy는 앞서 말한 Truthy와 비슷하게 거짓으로 평가되는 값을 의미함
- 아래의 조건들이 거짓으로 평가되는 값을 의미함
if (false) {
}
if (null) {
}
if (undefined) {
}
if (0) {
}
if (-0) {
}
if (0n) {
}
if (NaN) {
}
if ("") {
}