그런 다음 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;
도 반올림하여 이해합니다. ;