💻 프로그래밍

Boolean

불리언

참(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임을 바로 알 수 있어요."

⚠️ 흔한 실수 & 주의사항

Falsy 값 혼동 주의

0, '', false는 모두 falsy지만 서로 다른 값입니다. `if (!value)`로 체크하면 0이나 빈 문자열도 걸러지므로, `if (value === null || value === undefined)`처럼 명시적으로 체크하거나 `??` 연산자를 사용하세요.

Boolean과 비교하지 않기

`if (flag === true)` 대신 `if (flag)`를 사용하세요. 마찬가지로 `if (flag === false)` 대신 `if (!flag)`가 더 관용적입니다. 단, 값이 Boolean임이 보장되지 않을 때는 명시적 비교가 안전합니다.

의미 있는 Boolean 변수명 사용

isEnabled, hasPermission, canEdit, shouldUpdate처럼 상태를 명확히 나타내는 접두사를 사용하세요. flag, check, status 같은 모호한 이름은 코드 가독성을 떨어뜨립니다.

🔗 관련 용어

📚 더 배우기