-1 ** 2가 JavaScript에서 구문 오류 인 이유는 무엇입니까?
브라우저 콘솔에서 실행하면 SyntaxError: Unexpected token **
. 노드에서 시도 :
> -1**2
...
...
...
...^C
나는 이것이 **
전력 연산자 가있는 산술 표현식이라고 생각했습니다 . 다른 운영자에게는 그러한 문제가 없습니다.
이상하게도 */
두 번째 줄에 입력 하면 실행이 트리거됩니다.
> -1**2
... */
-1**2
^^
SyntaxError: Unexpected token **
여기서 무슨 일이 일어나고 있습니까?
브라우저 콘솔에서 실행하면 SyntaxError : Unexpected token **이 표시됩니다.
그것이 사양 이기 때문 입니다. 1의 부정의 제곱인지 (예 (-1) ** 2
:) 또는 1의 제곱의 부정인지 (예 :) 혼동을 피하기 위해 그렇게 설계되었습니다 -(1 ** 2)
. 이 디자인은 연산자 우선 순위에 대한 광범위한 논의 와 이것이 다른 언어에서 어떻게 처리되는지 조사한 결과로, 마지막으로 이것을 구문 오류로 만들어 예기치 않은 동작을 방지하기로 결정했습니다.
JavaScript에서는 모호한 지수 표현을 작성하는 것이 불가능합니다. 즉 , 기본 숫자 바로 앞에 단항 연산자 (
+
/-
/~
/!
/delete
/void
/typeof
)를 넣을 수 없습니다 .
그 이유는 동일한 텍스트에서도 설명됩니다.
PHP 및 Python과 같은 대부분의 언어와 지수 연산자 (일반적으로
^
또는**
) 가있는 다른 언어 에서 지수 연산자는 단항+
및 단항과 같은 단항 연산자보다 우선 순위가 높은 것으로 정의-
되지만 몇 가지 예외가 있습니다. 예를 들어 Bash에서**
연산자는 단항 연산자보다 낮은 우선 순위를 갖도록 정의됩니다.
따라서 혼동을 피하기 위해 코드는 모호함을 제거하고 괄호를 명시 적으로 넣어야한다고 결정했습니다.
(-1)**2
또는:
-(1**2)
참고로 바이너리 -
는 우선 순위가 낮은 방식으로 처리되지 않으므로 마지막 표현식은이 유효한 표현식과 동일한 결과를 갖습니다.
0-1**2
다른 프로그래밍 언어의 지수화 우선 순위
위의 인용문에서 이미 확인했듯이 중위 지수 연산자가있는 대부분의 프로그래밍 언어는 단항 마이너스보다 해당 연산자에 더 높은 우선 순위를 부여합니다.
다음은 단항 빼기 연산자에 더 높은 우선 순위를 부여하는 프로그래밍 언어의 몇 가지 다른 예입니다.
참조 URL : https://stackoverflow.com/questions/43556752/why-is-12-a-syntax-error-in-javascript
'IT story' 카테고리의 다른 글
Android Studio-푸시 실패 : 치명적 : 원격 저장소에서 읽을 수 없음 (0) | 2020.12.29 |
---|---|
org.hibernate.QueryException : 컬렉션을 역 참조하려는 잘못된 시도 (0) | 2020.12.29 |
Eclipse 파일 검색에 svn 디렉토리가 포함되지 않도록하려면 어떻게해야합니까? (0) | 2020.12.29 |
컬렉션 org.hibernate.HibernateException에 대한 공유 참조를 찾았습니다. (0) | 2020.12.29 |
Spring 3.0 MVC @ModelAttribute 변수가 URL에 나타나지 않도록하려면 어떻게해야합니까? (0) | 2020.12.29 |