JavaScript의 ~~ 연산자 해독
게임 물리학 라이브러리를 탐색하는 동안 수수께끼의 ~~ 연산자를 접했을 수도 있습니다. ~(비트 NOT) 연산자와 유사하므로 해당 기능에 대한 의문이 생깁니다. 단순히 동일한 값을 반환하는 이중 부정인가요?
놀랍게도 ~~ 연산자는 실제로 비트 단위 NOT 기원을 초월합니다. 이는 소수점 이하의 모든 항목을 제거하는 고유한 목적을 제공합니다.
소수점 제거에 대한 추론
이 동작은 피연산자를 부호 있는 32로 암시적으로 변환하는 데서 비롯됩니다. -bit 비트 연산이 수행되기 전의 정수입니다. 결과적으로 ~~ 연산자는 다음과 같이 작동합니다.
function(x) { if(x < 0) return Math.ceil(x); else return Math.floor(x); }
그러나 이 변환은 입력 값(x)이 -(2^31) ~ 2^31 - 1. 이러한 경계를 초과하면 데이터 오버플로가 발생하여 잠재적으로 예기치 않은 동작이 발생할 수 있습니다.
~~
변환 기능에도 불구하고 ~~
사용의 장점과 단점 문자열을 숫자로 변환하는 경우 오버플로에 취약하므로 ~~ 사용 시 주의해서 접근해야 합니다. 또한 의도된 목적은 수치 변환과 완전히 일치하지 않습니다. 대신 x 또는 Number(x)가 더 안정적이고 직관적인 옵션을 제공합니다.
Bitwise NOT Logic
위 내용은 ## JavaScript에서 ~~ 연산자는 무엇을 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!