Nice programing

10..toString ()은 작동하지만 10.toString ()은 작동하지 않는 이유는 무엇입니까?

nicepro 2020. 11. 9. 21:00
반응형

10..toString ()은 작동하지만 10.toString ()은 작동하지 않는 이유는 무엇입니까?


중복 가능성 :
JavaScript에서 toString 사용

152..toString(2)

이진 문자열 "10011000"을 올바르게 생성하지만

152.toString(2)

예외를 던진다

"SyntaxError : 식별자가 숫자 리터럴 바로 뒤에서 시작됩니다."

왜? 후자의 구문은 실제로 더 정확하지만 전자는 매우 이상해 보입니다!


.숫자 후는 모호한 보일 수 있습니다. 십진수 또는 개체 멤버 연산자입니까?

그러나 인터프리터 10 진수 로 결정 하므로 멤버 연산자가 누락되었습니다.

다음과 같이 표시됩니다.

(10.)toString();  // invalid syntax

두 번째를 포함하면 .소수 뒤에 멤버 연산자가 있습니다.

(10.).toString();

@pedants 및 downvoters

. 문자 제시 모호성을 . 배치에 따라 멤버 연산자 또는 소수로 이해 될 수 있습니다. 모호함이 없다면 물어볼 질문이 없을 것입니다.

.특정 위치 문자에 대한 사양의 해석은 십진수가 될 것이라는 것입니다. 이것은 ECMAScript의 숫자 리터럴 구문에 의해 정의됩니다.

사양이 JS 인터프리터의 모호성을 해결한다고해서 .캐릭터 의 모호성 이 전혀 존재 하지 않는다는 의미 는 아닙니다.


렉서 (일명 "토케 나이저")는 새 토큰을 읽을 때 처음 숫자를 찾을 합법적 인 숫자의 일부 아닌 문자를 볼 때까지 문자 (즉, 숫자 또는 하나 ) 를 계속 소비합니다 .

<152.>은 합법적 인 토큰이지만 (뒤에 0이 필요하지 않음) 그렇지 <152..>않으므로 첫 번째 예제는 다음 토큰 시리즈로 축소됩니다.

<152.> <.> <toString> <(> <2> <)>

이는 합법적이며 예상되는 시퀀스이지만 두 번째는 다음과 같습니다.

<152.> <toString> <(> <2> <)>

이것은 불법 toString입니다. 전화 에서 번호를 구분하는 마침표 토큰이 없습니다 .


10.A는 float number당신은에 toString을 사용할 수 있습니다float

예.

parseFloat("10").toString() // "10"

참고 URL : https://stackoverflow.com/questions/13149282/why-does-10-tostring-work-but-10-tostring-does-not

반응형