JS 비트 NOT(~) 연산자 및 ~~ Operator_javascript 기술에 대한 이해 및 분석

WBOY
풀어 주다: 2016-05-16 18:04:08
원래의
1258명이 탐색했습니다.

그런 다음 var!==”number” 유형의 경우 작업 수행 시 32비트 정수 데이터로 변환을 시도합니다. 정수 데이터로 변환할 수 없으면 NaN으로 변환됩니다. JS는 비트 연산을 사용합니다. 이 연산을 구현하는 더 간단한 방법은 구현 원리를 대략적으로 다음과 같이 이해할 수 있습니다.

코드 복사 코드는 다음과 같습니다:
var testData=-2.9;
var testResult=(typeof testData==="number"&&!isNaN(testData)&&testData!==Infinity)?(testData> ;0 )?-Math.floor(testData)-1:-Math.ceil(testData)-1:-1;

먼저 데이터를 32로 변환하려는 경우 정수 데이터인 경우 결과는 <0인 경우 -2.9->-2와 같이 반올림되어야 하며, >0인 경우 2.6->2와 같이 반내림됩니다.
If 데이터는 32비트 이진 표현으로 변환될 수 없습니다. 그런 다음 -1로 변환됩니다(예: ~{}/~NaN ==-1> 및 ~function(){return 100; }->-1;
Jquery에서는 if(!~this.className.indexOf(str)){ //do some thing…..};을 사용하는 것이 유용합니다. className.indexOf(str)은 -1보다 크거나 -1과 같을 때, ~-1===0이면, !~-1===true; 클래스 이름 str이 포함되어 있지 않다고 결론을 내릴 수 있습니다...
~~ 연산자의 경우에도 같은 방식으로 다음과 같이 표현할 수 있습니다.


var testData=2.1;
var testResult=(typeof testData==="number"&&! isNaN(testData)&&testData!==Infinity)?(testData>0)?Math.floor(testData): Math.ceil(testData):0;


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