JavaScript에서 이중 물결표(~~) 연산자는 무엇을 합니까?

DDD
풀어 주다: 2024-10-25 11:39:02
원래의
1001명이 탐색했습니다.

What Does the Double Tilde (~~) Operator Do in JavaScript?

이중 물결표 연산자: ~~

JavaScript에서는 " 이중 물결표" 연산자. 단일 물결표 ~는 비트 단위 NOT을 나타내는 반면, 이중 물결표는 어떤 역할을 하는지 궁금할 수 있습니다.

직관과는 달리 ~~는 NOT 연산의 NOT을 수행하지 않습니다. 대신, 피연산자를 암시적으로 32비트 정수로 변환하고 소수점 이하의 모든 항목을 제거합니다. 이 동작은 숫자와 문자열 모두에 적용됩니다.

기술적으로 ~~는 다음 함수처럼 동작합니다.

<code class="javascript">function(x) {
  if(x < 0) return Math.ceil(x);
  else return Math.floor(x);
}</code>
로그인 후 복사

그러나 피연산자 x가 다음 범위 내에 있을 때만 정확한 결과를 제공합니다. -(2^31) ~ 2^31 - 1. 이 범위를 벗어나면 오버플로가 발생하여 숫자가 "줄바꿈"됩니다.

문자열 인수의 숫자 구문 분석에 ~~를 사용하고 싶은 유혹이 생길 수 있습니다. , 그러나 이는 권장되지 않습니다. 정수가 아닌 경우 오버플로 및 부정확함으로 인해 잘못된 선택이 됩니다. 대신 x 또는 Number(x)를 사용하세요.

이중 물결표를 NOT의 NOT으로 이해

NOT 연산을 ~~ 효과적으로 수행하는 방법을 이해하려면 다음을 고려하세요. 다음 예:

숫자 -43.2는 부호 있는 32비트 이진수로 표시됩니다.

-43.2 = 11111111111111111111111111010101 (2)
로그인 후 복사

비트 단위 NOT 적용:

NOT -43.2 = 00000000000000000000000000101010 (2) = 42
로그인 후 복사

두 번째 적용 비트 NOT:

NOT 42 = 11111111111111111111111111010101 (2) = -43
로그인 후 복사

간단한 방식으로 NOT 연산의 NOT을 수행하지 않더라도 ~~ 연산자는 두 개의 연속 비트 NOT 연산과 동일한 결과를 생성합니다.

위 내용은 JavaScript에서 이중 물결표(~~) 연산자는 무엇을 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿