>  기사  >  웹 프론트엔드  >  JavaScript에서 `040`이 32인 이유는 무엇입니까?

JavaScript에서 `040`이 32인 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-26 09:01:11357검색

Why Does `040` Equal 32 in JavaScript?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.