JavaScript에서 앞에 0이 있는 숫자: 미스터리 해독
JavaScript에서 다음 코드가 발생한다고 상상해 보세요.
var num = 040; console.log(num); // 32
당황스러워서 40이 어떻게 32인지 궁금할 것입니다. 대답은 다음과 같은 의미에 있습니다.
JavaScript의 초기 버전에서 숫자 리터럴의 선행 0은 16진수의 선행 0x와 유사하게 8진수(기본 8) 숫자를 나타냅니다. 따라서 "040"은 4x8^1 0x8^0 = 32로 해석되었습니다.
그러나 이 관행은 혼란스러운 것으로 판명되어 ECMAScript 3에서 선택적 확장으로 다운그레이드되었습니다. 최신 JavaScript는 엄격 모드를 시행합니다. 일관성을 위해 10진수 리터럴은 금지됩니다.
ECMAScript 6에서는 0o 및 2진수를 사용하여 8진수와 2진수를 표현하는 새로운 방법을 도입했습니다. 각각 0b 접두사. 선행 0(010)을 사용하는 레거시 8진수 형식은 엄격 모드에서 구문 오류가 되었습니다.
따라서 위 코드는 이제 엄격 모드에서 구문 오류를 반환합니다. 8진수로 숫자를 구문 분석하려는 경우 권장되는 0o 접두사를 사용하거나 다음과 같이 parseInt를 사용할 수 있습니다.
parseInt('010', 8); // Returns 8
십진수가 올바르게 구문 분석되도록 하려면 선행 0을 제거하거나 parseInt를 사용하세요.
요약하자면, JavaScript의 숫자 리터럴에서 앞에 오는 0의 역사적 중요성을 이해하는 것은 JavaScript의 동작을 이해하고 코드를 해석하는 데 매우 중요합니다. 맞습니다.
위 내용은 JavaScript에서 `040`이 32인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!