논리적 사고

검사 목록이 비었는데 every는 왜 참을 돌려줄까?

검사 수·실패 위치를 바꾸고 실제 호출 횟수를 세어, ‘반례 없음’과 ‘검사를 수행함’을 구별합니다.

빈 목록은 참·호출 0회, 세 항목 모두 성공은 참·호출 3회, 두 번째 항목 실패는 거짓·호출 2회로 비교한 표
빈 목록은 참·호출 0회, 세 항목 모두 성공은 참·호출 3회, 두 번째 항목 실패는 거짓·호출 2회로 비교한 표
그림 크게 열기 ↗SVG 저장

그림에서 무엇을 볼까요?

빈 목록은 참·호출 0회, 세 항목 모두 성공은 참·호출 3회, 두 번째 항목 실패는 거짓·호출 2회로 비교한 표

AI에게 검사 결과를 요약하게 했는데, 프로그램에는 검사 항목이 하나도 들어오지 않았다고 합시다. 자바스크립트의 배열, 즉 순서 있는 항목 모음에 every(에브리, 모든 항목 조건 검사)를 실행하면 빈 배열에서도 true(트루, 참)가 나옵니다. 이 결과만 ‘검사 완료’로 번역하면 수행하지 않은 검사를 완료했다고 잘못 보고할 수 있습니다.

every는 조건을 만족하지 않는 항목을 만나면 곧바로 false(폴스, 거짓)를 반환합니다. 끝까지 그런 항목을 만나지 않으면 참을 반환합니다. 빈 목록에서는 검사할 항목도, 조건을 어긴 항목도 없어 참입니다. ‘반례를 찾지 않았다’는 것과 ‘대상 자료를 충분히 검사했다’는 것은 서로 다른 주장입니다.

함께 확인할 점

항목 0개에서 반환값과 호출 횟수를 함께 읽습니다. 항목 3개·실패 없음으로 바꾸고, 실패를 두 번째 항목으로 지정합니다. 추가 판정이 참이어도 필수 항목 전체를 검사했다는 보장이 없는 이유를 적고 초기화합니다.

생각해 볼 질문

‘검사 통과’라는 보고에 반드시 함께 있어야 할 대상 목록·실행 건수·실패·미실행 정보를 네 줄로 적어 보세요.

← 논리적 사고 그림 더 보기