>  기사  >  웹 프론트엔드  >  JavaScript에서 이중 물결표(~~) 연산자는 무엇을 합니까?

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

DDD
DDD원래의
2024-10-25 11:39:02890검색

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

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