Boolean
불리언
참(true)/거짓(false) 값만 가지는 데이터 타입. 조건문, 논리 연산의 기초.
불리언
참(true)/거짓(false) 값만 가지는 데이터 타입. 조건문, 논리 연산의 기초.
Boolean은 영국 수학자 George Boole의 이름에서 유래한 자료형으로, 오직 true(참)와 false(거짓) 두 가지 값만 가질 수 있습니다. 컴퓨터 과학의 가장 기본적인 데이터 타입 중 하나로, 모든 논리적 판단과 의사결정의 기초가 됩니다.
Boolean 값은 조건문(if, while, for)에서 프로그램의 흐름을 제어하는 핵심 역할을 합니다. 비교 연산자(==, !=, >, <)와 논리 연산자(&&, ||, !)의 결과는 항상 Boolean 값으로 반환되며, 이를 통해 복잡한 조건을 조합할 수 있습니다.
대부분의 프로그래밍 언어에서 Boolean은 내부적으로 1(true)과 0(false)으로 표현됩니다. JavaScript에서는 Truthy와 Falsy 개념이 있어 0, "", null, undefined, NaN은 false로, 그 외의 값은 true로 암묵적 변환됩니다. 이러한 특성을 이해하는 것이 버그 없는 코드 작성의 핵심입니다.
Boolean 논리는 데이터베이스 쿼리의 WHERE 절, 검색 엔진의 필터링, 권한 체크, 피처 플래그 등 실무 전반에서 활용됩니다. AI/ML 분야에서도 이진 분류(Binary Classification) 문제의 출력값이나 마스크 연산에서 Boolean 배열이 핵심적으로 사용됩니다.
// 1. Boolean 기본 사용과 논리 연산
const isLoggedIn = true;
const isAdmin = false;
const hasPermission = true;
// 논리 연산자: AND(&&), OR(||), NOT(!)
const canEdit = isLoggedIn && hasPermission; // true (둘 다 참)
const canView = isLoggedIn || isAdmin; // true (하나만 참이면 됨)
const isGuest = !isLoggedIn; // false (반전)
console.log(`편집 가능: ${canEdit}, 조회 가능: ${canView}`);
// 2. 조건문에서의 Boolean 활용
function checkAccess(user) {
if (user.isActive && user.emailVerified) {
return '전체 접근 허용';
} else if (user.isActive) {
return '이메일 인증 필요';
} else {
return '계정 비활성화됨';
}
}
// 3. Truthy와 Falsy 이해하기
const falsyValues = [false, 0, '', null, undefined, NaN];
const truthyValues = [true, 1, 'hello', [], {}, -1];
falsyValues.forEach(val => {
console.log(`${String(val)}: ${Boolean(val)}`); // 모두 false
});
// 4. 단축 평가(Short-circuit Evaluation) 활용
const username = user?.name || '익명 사용자'; // falsy면 기본값
const settings = config ?? defaultConfig; // null/undefined면 기본값
// 5. Boolean 필터링
const items = [0, 1, false, 2, '', 3, null, 'hello'];
const truthyItems = items.filter(Boolean); // [1, 2, 3, 'hello']
console.log('Truthy 값들:', truthyItems);
// 6. 토글 패턴
let isDarkMode = false;
function toggleDarkMode() {
isDarkMode = !isDarkMode; // true ↔ false 전환
document.body.classList.toggle('dark', isDarkMode);
}
"이 기능은 피처 플래그로 관리하면 좋겠습니다. Boolean 값 하나로 프로덕션에서 기능을 켜고 끌 수 있어서, 문제가 생기면 코드 배포 없이 즉시 롤백할 수 있어요."
"JavaScript에서 Truthy와 Falsy 개념을 알고 있습니다. 예를 들어 빈 배열 []은 객체라서 truthy지만, 빈 문자열 ''은 falsy입니다. 그래서 배열이 비어있는지 확인할 때는 array.length > 0으로 명시적으로 체크합니다."
"여기 `if (isValid == true)` 대신 `if (isValid)`로 간단하게 쓸 수 있어요. Boolean 변수는 이미 true/false니까 비교할 필요 없습니다. 그리고 변수명을 is, has, can, should 접두사로 시작하면 Boolean임을 바로 알 수 있어요."
0, '', false는 모두 falsy지만 서로 다른 값입니다. `if (!value)`로 체크하면 0이나 빈 문자열도 걸러지므로, `if (value === null || value === undefined)`처럼 명시적으로 체크하거나 `??` 연산자를 사용하세요.
`if (flag === true)` 대신 `if (flag)`를 사용하세요. 마찬가지로 `if (flag === false)` 대신 `if (!flag)`가 더 관용적입니다. 단, 값이 Boolean임이 보장되지 않을 때는 명시적 비교가 안전합니다.
isEnabled, hasPermission, canEdit, shouldUpdate처럼 상태를 명확히 나타내는 접두사를 사용하세요. flag, check, status 같은 모호한 이름은 코드 가독성을 떨어뜨립니다.