按位非 按位非操作符由一個波浪線(~)表示,執行按位非的結果就是返回數值的反碼 現在讓我來看幾個例子 例子1 例子2 例子3 結論 通過上面的例子我們可以知道對於整數,按位非就是操作數的負值減1. 但是對於浮點數就比較麻煩了,操作浮點數時,會直接捨去小數部分,在取負值減1 利用這點我們可以可以使用~ ...
按位非
按位非操作符由一個波浪線(~)表示,執行按位非的結果就是返回數值的反碼
現在讓我來看幾個例子
例子1
console.log(4); console.log(~4); console.log(~~4);
例子2
console.log(4.9.toString(2)); console.log(~4.9); console.log(~~4.9);
例子3
console.log(-4.1.toString(2)); console.log(~-4.1); console.log(~~-4.1);
結論
通過上面的例子我們可以知道對於整數,按位非就是操作數的負值減1.
但是對於浮點數就比較麻煩了,操作浮點數時,會直接捨去小數部分,再取負值減1
利用這點我們可以可以使用~~來代替Math.floor();
比如我們經常求一個數組的中點,就可以直接~~(arr.length/2),是不是比Math.floor()來的更方便呢?
此外|0操作也可以達到和~~類似的效果,例如(arr.length/2)|0
再補充個小知識:
console.log(~~NaN);//0 console.log(NaN|0);//0