0명과 아직 모르는 인원은 다른 정보입니다
워크숍 신청 인원이 0명으로 확인된 경우와 아직 집계되지 않은 경우를 같은 기본값으로 처리하면 화면의 의미가 달라집니다. AI가 자바스크립트의 value || 10을 ‘값이 없으면 10’이라고 설명했다면, 여기서 없다는 말이 어떤 입력을 포함하는지 실행으로 확인해야 합니다.
논리합 연산자 ||는 왼쪽 값을 참·거짓으로 변환해 거짓이면 오른쪽 값을 사용합니다. 숫자 0, 빈 문자열, false, NaN, null, undefined가 여기에 들어갑니다. 숫자 0 || 10은 10입니다. 그러나 문자열 "0"은 참으로 변환되므로 그대로 남습니다. 표시가 비슷해도 자료형이 다르면 결과가 달라집니다.
널 병합은 null과 undefined를 확인합니다
널 병합 연산자 ??는 왼쪽이 널(null, 명시한 빈 값) 또는 언디파인드(undefined, 정의되지 않은 값)일 때 오른쪽을 사용합니다. 숫자 0 ?? 10은 0입니다. false와 빈 문자열도 유지합니다. ‘0명’을 보존할지, 빈 문자열도 대체할지는 자료 규칙에 맞추어 정해야 합니다.
아래에서 같은 입력을 두 연산자에 넣어 값과 자료형을 나란히 확인하세요. 기본값 만들기 함수의 호출 수도 표시합니다. 오른쪽 값이 필요할 때만 함수를 실행하는 것을 단락 평가라고 합니다. 입력 0에서는 || 쪽이 한 번, ?? 쪽은 0번 호출합니다.
어느 값을 대체할지는 자료의 뜻으로 정합니다
가상 신청서의 ‘인원’에서 숫자 0은 확인한 집계일 수 있습니다. 같은 화면의 ‘비고’에서 빈 문자열은 적을 말이 없다는 선택일 수 있고, 입력을 빠뜨린 상태일 수도 있습니다. 연산자가 이런 뜻을 알아서 판정하지는 않습니다. 값을 저장하는 쪽과 읽는 쪽이 빈 값의 뜻을 먼저 맞춰야 합니다.
기본값 함수 호출 수를 함께 표시한 이유도 여기에 있습니다. 오른쪽이 단순한 숫자 대신 계산이라면, 그 계산을 수행했는지도 결과의 일부입니다. 활동의 기본값 함수는 호출 수만 세고 10을 반환합니다. 외부 작업은 하지 않으므로 같은 입력으로 안전하게 반복하며 두 연산자의 평가 차이를 볼 수 있습니다.
기본값 선택과 입력 검증을 나눕니다
입력을 NaN으로 바꾸면 ||는 10을, ??는 NaN을 유지합니다. NaN은 낸(Not a Number, 수가 아님)이라고 읽으며 수치 계산이 유효한 수를 만들지 못했을 때 나타날 수 있는 특수한 숫자 값입니다. 이를 모르는 인원으로 바꾸어도 되는지는 별도의 결정입니다.
두 연산자는 신청 인원이 올바른 정수인지 검사하지 않습니다. 이 활동의 문자열 "0"도 두 연산자 모두 문자열로 남깁니다. AI에게는 기본값을 고르는 규칙과 숫자 변환·정수 범위 검사를 따로 설명하게 하세요. 활동은 가상 자료만 사용하며 실제 신청서나 회원 정보를 읽지 않습니다.

