AI 보이는 추론 실험실

신청 인원 0명에 기본값을 넣으면 10명으로 바뀔까?

논리합과 널 병합 연산자를 실제로 실행해 숫자 0·빈 문자열·null을 구분하고, 기본값을 계산하는 시점까지 확인합니다.

탐구게시 2026-10-20읽기·실험 약 8분확인 문제 2개규칙 기반 실행한국논리학협회 자체 제작제작·검수 LTCT 편집부

밝은 공방에서 가상 신청 인원 기록을 확인하는 남성과 기록지를 함께 살펴보는 작은 공식 올리
학습 장면을 표현한 AI 생성 이미지입니다. 사진의 표시와 자료는 실제 측정·운영 기록이 아닙니다. · 주제 이해를 돕기 위한 AI 생성 이미지 · LTCT 자체 제작
오늘의 질문

인원이 0일 때 value || 10과 value ?? 10은 각각 어떤 값과 자료형을 돌려줄까요?

입력 0에서 논리합은 기본값 10을 선택하고 널 병합은 0을 유지하며 두 결과의 자료형은 모두 숫자인 비교
입력 0에서 논리합은 기본값 10을 선택하고 널 병합은 0을 유지하며 두 결과의 자료형은 모두 숫자인 비교 · 한국논리학협회 자체 제작
그림 크게 보기 ↗
01

0명과 아직 모르는 인원은 다른 정보입니다

워크숍 신청 인원이 0명으로 확인된 경우와 아직 집계되지 않은 경우를 같은 기본값으로 처리하면 화면의 의미가 달라집니다. AI가 자바스크립트의 value || 10을 ‘값이 없으면 10’이라고 설명했다면, 여기서 없다는 말이 어떤 입력을 포함하는지 실행으로 확인해야 합니다.

논리합 연산자 ||는 왼쪽 값을 참·거짓으로 변환해 거짓이면 오른쪽 값을 사용합니다. 숫자 0, 빈 문자열, false, NaN, null, undefined가 여기에 들어갑니다. 숫자 0 || 10은 10입니다. 그러나 문자열 "0"은 참으로 변환되므로 그대로 남습니다. 표시가 비슷해도 자료형이 다르면 결과가 달라집니다.

02

널 병합은 null과 undefined를 확인합니다

널 병합 연산자 ??는 왼쪽이 널(null, 명시한 빈 값) 또는 언디파인드(undefined, 정의되지 않은 값)일 때 오른쪽을 사용합니다. 숫자 0 ?? 10은 0입니다. false와 빈 문자열도 유지합니다. ‘0명’을 보존할지, 빈 문자열도 대체할지는 자료 규칙에 맞추어 정해야 합니다.

아래에서 같은 입력을 두 연산자에 넣어 값과 자료형을 나란히 확인하세요. 기본값 만들기 함수의 호출 수도 표시합니다. 오른쪽 값이 필요할 때만 함수를 실행하는 것을 단락 평가라고 합니다. 입력 0에서는 || 쪽이 한 번, ?? 쪽은 0번 호출합니다.

03

어느 값을 대체할지는 자료의 뜻으로 정합니다

가상 신청서의 ‘인원’에서 숫자 0은 확인한 집계일 수 있습니다. 같은 화면의 ‘비고’에서 빈 문자열은 적을 말이 없다는 선택일 수 있고, 입력을 빠뜨린 상태일 수도 있습니다. 연산자가 이런 뜻을 알아서 판정하지는 않습니다. 값을 저장하는 쪽과 읽는 쪽이 빈 값의 뜻을 먼저 맞춰야 합니다.

기본값 함수 호출 수를 함께 표시한 이유도 여기에 있습니다. 오른쪽이 단순한 숫자 대신 계산이라면, 그 계산을 수행했는지도 결과의 일부입니다. 활동의 기본값 함수는 호출 수만 세고 10을 반환합니다. 외부 작업은 하지 않으므로 같은 입력으로 안전하게 반복하며 두 연산자의 평가 차이를 볼 수 있습니다.

04

기본값 선택과 입력 검증을 나눕니다

입력을 NaN으로 바꾸면 ||는 10을, ??는 NaN을 유지합니다. NaN은 낸(Not a Number, 수가 아님)이라고 읽으며 수치 계산이 유효한 수를 만들지 못했을 때 나타날 수 있는 특수한 숫자 값입니다. 이를 모르는 인원으로 바꾸어도 되는지는 별도의 결정입니다.

두 연산자는 신청 인원이 올바른 정수인지 검사하지 않습니다. 이 활동의 문자열 "0"도 두 연산자 모두 문자열로 남깁니다. AI에게는 기본값을 고르는 규칙과 숫자 변환·정수 범위 검사를 따로 설명하게 하세요. 활동은 가상 자료만 사용하며 실제 신청서나 회원 정보를 읽지 않습니다.

직접 확인하기 · 규칙 기반 실행

입력 값과 자료형에 따른 기본값 비교

숫자 0에서 두 결과의 값·자료형·기본값 함수 호출 수를 읽습니다. null·빈 문자열·문자열 "0"로 바꾸며 차이가 생기는 조건을 찾습니다. NaN을 선택하고 기본값 결정과 숫자 유효성 검사가 같은 일인지 설명한 뒤 초기화합니다.

조건을 바꾸어 직접 확인하기

입력: 0 · 자료형: number

value || 기본값()

결과: 10

자료형: number

기본값 함수 호출: 1회

value ?? 기본값()

결과: 0

자료형: number

기본값 함수 호출: 0회

기본값 함수는 숫자 10을 반환합니다. 입력 유효성 검사는 별도입니다.

관계를 읽고, 다른 상황에 적용하기

두 문제로 생각 확인

1숫자 0을 그대로 보존하면서 null과 undefined에만 10을 쓰는 식은?
2문자열 "0"에 value ?? 10을 실행한 결과의 자료형은?

두 문제의 답을 모두 선택하면 해설을 볼 수 있습니다.

나의 설명으로 마무리

오늘 발견한 관계

0 / 4,000자

메모는 현재 기기의 브라우저에만 보관됩니다. 계정이나 다른 기기에는 동기화되지 않습니다.

출처와 제작 안내

원문을 참고해 설명·도표·문항·실험을 새로 작성했습니다. 별도 표시가 없는 사례와 수치는 학습을 위한 가상 예시입니다. 원문 번역이나 실제 모델의 성능 평가 자료가 아닙니다.

  1. 논리합과 널 병합 연산자의 평가 ↗Ecma International / TC39ECMAScript 2025 §13.13.1 Runtime Semantics: Evaluation

    ||의 참·거짓 변환과 ??의 null·undefined 검사 및 단락 평가를 확인. 신청 인원 0은 자체 사례.