
진리표의 사전적 정의[위키피디아]


개발을 진행하면서 조건문을 사용하는 경우가 많습니다. 이때 언어별 진리표를 외우고 있지 않으면 다소 어색한 방식으로 조건문을 작성하게 됩니다.
const sample = ''
if (!sample){
console.log('빈 문자열입니다.')
}
if (sample.length === 0){
console.log('빈 문자열입니다.')
}
| 값 | Boolean 평가 (Truthy/Falsy) | 설명 |
|---|---|---|
false | Falsy | false 리터럴 |
0 | Falsy | 숫자 0 |
-0 | Falsy | 음수 0 |
0n | Falsy | BigInt 0 |
"" | Falsy | 빈 문자열 |
null | Falsy | 값이 없음 |
undefined | Falsy | 정의되지 않은 값 |
NaN | Falsy | 숫자가 아님(Not-a-Number) |
true | Truthy | true 리터럴 |
{} | Truthy | 빈 객체 |
[] | Truthy | 빈 배열 |
"0" | Truthy | 값이 있는 문자열 (숫자 형태 포함) |
"false" | Truthy | 값이 있는 문자열 |
Infinity | Truthy | 양의 무한대 |
-Infinity | Truthy | 음의 무한대 |
42 | Truthy | 0이 아닌 숫자 |
-42 | Truthy | 0이 아닌 음수 |
0.1 | Truthy | 0이 아닌 부동소수점 값 |
" " | Truthy | 공백이 포함된 문자열 |
| 값 | Boolean 평가 (Truthy/Falsy) | 설명 |
|---|---|---|
False | Falsy | False 리터럴 |
None | Falsy | 값이 없음을 나타냄 |
0 | Falsy | 정수 0 |
0.0 | Falsy | 부동소수점 0 |
0j | Falsy | 복소수 0 |
Decimal(0) | Falsy | Decimal 0 |
Fraction(0, 1) | Falsy | Fraction 0 |
"" | Falsy | 빈 문자열 |
() | Falsy | 빈 튜플 |
[] | Falsy | 빈 리스트 |
{} | Falsy | 빈 딕셔너리 |
set() | Falsy | 빈 집합 |
frozenset() | Falsy | 빈 불변 집합 |
range(0) | Falsy | 빈 range 객체 |
True | Truthy | True 리터럴 |
1 | Truthy | 0이 아닌 정수 |
-1 | Truthy | 0이 아닌 음수 정수 |
0.1 | Truthy | 0이 아닌 부동소수점 값 |
1j | Truthy | 0이 아닌 복소수 |
" " | Truthy | 공백이 포함된 문자열 |
("값",) | Truthy | 값이 있는 튜플 |
[1, 2, 3] | Truthy | 값이 있는 리스트 |
{"키": "값"} | Truthy | 값이 있는 딕셔너리 |
{1, 2, 3} | Truthy | 값이 있는 집합 |
frozenset({1, 2}) | Truthy | 값이 있는 불변 집합 |
range(1, 10) | Truthy | 값이 있는 range 객체 |
두 언어의 진리표 차이는 [], {}에 대한 평가입니다.
javascript는 빈 배열과 빈 객체를 참조형 데이터로 바라보고, python은 집합의 관점에서 공집합으로 해석합니다.
요약: ==은 값만 비교를 하면 이때 type coercion이 발생합니다. ===은 값과 타입을 비교하며 명시적
// type coercion 예시
console.log(3-"5") // -2
console.log(3+"5") // "35"
console.log(''==false) // true