> 웹 프론트엔드 > JS 튜토리얼 > ## JavaScript에서 ~~(이중 물결표) 연산자는 실제로 무엇을 합니까?

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

Mary-Kate Olsen
풀어 주다: 2024-10-30 09:16:03
원래의
253명이 탐색했습니다.

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

JavaScript의 마법 같은 ~~(이중 물결표) 연산자 탐색

JavaScript 모험의 영역에서 신비한 운영자. 언뜻 보면 신뢰할 수 있는 비트 NOT 연산자인 단일 물결표 ~와 유사합니다. 이것은 가 이중 NOT을 수행하고 단순히 동일한 값을 반환한다는 의미입니까? 더 깊이 파고들어 그 진정한 목적을 밝혀내겠습니다.

진실 밝히기

연산자의 비밀은 피연산자를 해석하는 방식에 있습니다. 단일 물결표와 달리 은 입력이 숫자나 문자열이더라도 부호 있는 32비트 정수로 변환합니다. 이 변환을 사용하면 소수점 이하의 모든 항목을 효과적으로 제거하는 비트 연산을 수행합니다.

즉, 이 연산자는 다음 함수처럼 동작합니다.

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

그러나 올바르게 작동하는 경우에만 작동합니다. 오버플로를 방지하려면 -(231)과 231 - 1 사이의 값에 대해

왜 ~~가 NOT의 NOT이 아닌지

은 NOT 연산을 두 번 적용하는 것과 동일하지 않다는 점을 이해하는 것이 중요합니다. 첫 번째 NOT 연산은 비트를 반전시키는 반면, 두 번째 연산은 비트를 다시 반전시켜 원래 값이 됩니다. 대신 은 숫자의 소수 부분을 직접 자릅니다.

예를 들어 32비트 바이너리로 표현되는 숫자 -43.2는 다음과 같습니다.

<code class="binary">11111111111111111111111111010101</code>
로그인 후 복사
로그인 후 복사

~~을 적용한 후,

<code class="binary">11111111111111111111111111010101</code>
로그인 후 복사
로그인 후 복사

이것은 -43으로 다시 변환됩니다. 이는 ~~가 숫자의 소수 부분을 효과적으로 제거한다는 것을 보여줍니다.

주의 사항

~~은 문자열 인수를 숫자로 변환하는 데 유용할 수 있지만 오버플로 위험이 있습니다. 정수가 아닌 것에 대한 본질적인 부정확성은 위험한 선택이 됩니다. 대신 x 또는 Number(x)와 같은 보다 간단한 방법을 사용하는 것을 고려해 보십시오.

결론적으로 ~~는 숫자나 문자열에서 소수 값을 자르는 매력적인 연산자입니다. 고유한 동작과 제한 사항을 이해하면 JavaScript 모험에서 책임감 있게 그 기능을 활용할 수 있습니다.

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

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