次に、typeof var!==”number” の型については、演算を行う際に 32 ビットの整数データに変換しようとしますが、整数データに変換できない場合は、
に変換されます。 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 に変換しようとしているとします。整数データの場合、結果が -2 のように切り上げる必要があり、>0 の場合は、2.6->2 のように切り捨てられます。データは 32 ビットのバイナリ表現に変換できません。たとえば、~{}/~NaN ==-1; のように、NaN に変換されます。 }->-1;
Jquery では、 if(!~this.className.indexOf(str)){ //何かをする…..}; を使用すると便利です。 className.indexOf(str) が -1 より大きいか、 -1 に等しい場合、 ~-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;
も切り上げと切り捨てで理解されます。 ;