내가 쓰는 가정 0.5
으로 0.-5
예상치 못한 방법으로,하지만 여전히 실행할 수 있습니다. 계속 실행되고 -5로 평가되기 위해 0.
in 0.-5
은 무엇을 합니까?
나는 또한 시도 alert(0.-5+1)
인쇄 -4, 자바 스크립트를 무시 않는 0.
에서 0.-5
?
답변
a 뒤의 후행 숫자 .
는 선택 사항입니다.
console.log(0. === 0); // true
그래서
0.-5
평가하다
0 - 5
그것은 단지 -5
입니다. 비슷하게,
0.-5+1
이다
0 - 5 + 1
그것은
-5 + 1
또는 -4
.
답변
0.-5
성공적으로 파싱 할 수있다 0.
[1] , -
및 5
. 다음은 AST 탐색기에서 생성 된 표현식의 추상 구문 트리입니다.
이것은 (예기치 않은 방식으로) 유효한 JavaScript이며 -5
.
[1] 숫자 리터럴의 문법에 따르면 십진수와 지수 부분은 선택 사항입니다.
NumericLiteral ::
DecimalLiteral
[…]DecimalLiteral ::
DecimalIntegerLiteral. DecimalDigits opt ExponentPart opt
답변
JS에서는 선택적 소수점으로 숫자를 표현할 수 있습니다.
x = 5.; //5
x = 5. + 6. //11
그리고 Tvde1의 의견에 따라 모든 Number 메서드도 적용 할 수 있습니다.
5..toString()
이 구문을 사용하면 괄호없이 숫자 함수를 실행할 수 있습니다.
5.toString() //error
(5).toString() //good
5..toString() //good
5 .toString() // awesome
이유를 알아 보려면 이 질문을 참조하십시오 .
답변
진짜 답은 소수점이 아니라 마이너스 부호에 관한 것이라고 생각합니다. 앞에 숫자처럼 보이는 것이 있으면 연산자로 해석되지 않습니까?
답변
console.log(0. - 5) // -5
console.log(0 - 5) // -5
console.log('0.' - 5) // -5
console.log('0' - 5) // -5
console.log(0.-5 === -5) // true
‘0.’ 또는 ‘0’은 유형이 숫자에 대해 고유하기 때문에 JavaScript에서 동일합니다. 빼기 연산자는 숫자 사이에 있으므로 항상 전달하는 것을 숫자로 변환하십시오. Python에서는 여러 유형이 있기 때문에 첫 번째는 Float이고 두 번째는 Integer입니다.