3 回答

TA貢獻1836條經驗 獲得超3個贊
波浪形運算符實際上并不是jQuery的一部分 - 它本身就是JavaScript中的一個NOT運算符。
參見蒂爾德的神秘之處(?)。
您在實驗中得到了奇怪的數字,因為您正在對整數執行按位邏輯運算(據我所知,可能存儲為兩個補碼或類似的東西......)
兩個補碼解釋了如何用二進制表示數字。我想我是對的。

TA貢獻1796條經驗 獲得超10個贊
!!~expr計算結果為false,當expr為-1,否則true。
它是一樣的expr != -1,只有破碎的*
它的工作原理是JavaScript按位運算將操作數轉換為二進制補碼格式的32位有符號整數。因此!!~-1評估如下:
-1 = 1111 1111 1111 1111 1111 1111 1111 1111b // two's complement representation of -1
~-1 = 0000 0000 0000 0000 0000 0000 0000 0000b // ~ is bitwise not (invert all bits)
!0 = true // ! is logical not (true for falsy)
!true = false // duh
除了-1將至少一個位設置為零之外的值; 顛倒它將創造一個真正的價值; 將!運算符兩次應用于truthy值返回boolean true。
使用時.indexOf(),我們只想檢查結果是否-1:
!!~"abc".indexOf("d") // indexOf() returns -1, the expression evaluates to false
!!~"abc".indexOf("a") // indexOf() returns 0, the expression evaluates to true
!!~"abc".indexOf("b") // indexOf() returns 1, the expression evaluates to true
* !!~8589934591評估為假,所以這個厭惡不能可靠地用于測試-1。
添加回答
舉報