문자열, 숫자, boolean, undefined, null, 객체 타입을 구분합니다.
원시값에는 string, number, bigint, boolean, undefined, symbol, null이 있고 배열·함수 등은 객체 계열입니다. typeof null이 역사적 이유로 object를 반환한다는 예외가 있습니다.
values 배열의 여섯 값마다 map이 String(value)와 typeof value를 이은 한 줄을 만들고, join이 그 줄들을 줄바꿈 문자로 연결합니다. 마지막 줄이 1,2 → object로 보이는 까닭은 String([1, 2])가 요소를 쉼표로 이은 1,2를 돌려주고 배열의 typeof가 object이기 때문입니다.
typeof만으로는 배열과 일반 객체, null을 가려낼 수 없으므로 배열은 Array.isArray(value), null은 value === null로 따로 확인합니다. 정수와 소수도 모두 number 하나로 표현되어 typeof 3과 typeof 3.5는 똑같이 number를 돌려줍니다.
폼 input의 value는 숫자처럼 보여도 문자열입니다. 계산 전에 Number로 변환하세요.
직접 바꿔보세요BigInt와 함수 값을 배열에 추가해 typeof 결과를 확인하세요.