文章詳情頁
JavaScript按位非操作符(~)
瀏覽:139日期:2023-04-28 08:58:04
問題描述
看到<TFC2017/>的抽獎代碼
~~23.5 // 23
為什么~操作符可以將數字取整呢?
問題解答
回答1:經過 ToInt32。其作用是將被操作數的二進制形式按位翻轉。所以兩個 ~~ 連在一起就相當于進行了如下操作:
對操作數進行 ToInt32
按位翻轉
再次按位翻轉實際上也還是利用了 ToInt32 的絕對值取整
另外關于 ~ 操作符有個技巧還是比較實用的:~(-1) 的值為 0,而且 -1 是唯一一個經過 ~ 運算返回假值的值(包括其他那些特殊的值比如 NaN、{}、[] 等都不會返回假值)字符串和數組的 indexOf 函數查找失敗會返回 -1,這時候就可以用 if(~str.indexOf(’str’)) // 來表示找到了比判斷 >= 0 或者 != -1 更優雅,跟用 !! 來判斷非假值有異曲同工之妙
作者:mdluo鏈接:https://www.zhihu.com/questio...
取整是把浮點數轉化了32位二進制整數,所以能還原狀態的位操作都能進行取整,如23.5 >> 0 //23、23.5 >> 0 //23。
標簽:
JavaScript
相關文章:
1. objective-c - 從朋友圈跳到我的APP 如何實現?2. java - PHP開發微信無法獲取到signature,timestamp,nonce3. 請教一個python字符串處理的問題?4. HTML5禁止img預覽該怎么解決?5. 怎么可以實現在手機瀏覽器看到鏈接的title屬性,就是鼠標放上去會有一個tip效果的6. 如何分別在Windows下用Winform項模板+C#,在MacOSX下用Cocos Application項目模板+Objective-C實現一個制作游戲的空的黑窗口?7. 網頁爬蟲 - python爬蟲用BeautifulSoup爬取<s>元素并寫入字典,但某些div下沒有這一元素,導致自動寫入下一條,如何解決?8. html5 - h5+中webview的show方法有延遲9. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風格檢查怎么辦。。。10. javascript - html 中select如何修改樣式,鼠標懸浮時改變option樣式,有沒有插件啊
排行榜
