文章詳情頁
JavaScript按位非操作符(~)
瀏覽:114日期:2023-04-28 08:58:04
問題描述
看到<TFC2017/>的抽獎代碼
~~23.5 // 23
為什么~操作符可以將數(shù)字取整呢?
問題解答
回答1:經(jīng)過 ToInt32。其作用是將被操作數(shù)的二進制形式按位翻轉。所以兩個 ~~ 連在一起就相當于進行了如下操作:
對操作數(shù)進行 ToInt32
按位翻轉
再次按位翻轉實際上也還是利用了 ToInt32 的絕對值取整
另外關于 ~ 操作符有個技巧還是比較實用的:~(-1) 的值為 0,而且 -1 是唯一一個經(jīng)過 ~ 運算返回假值的值(包括其他那些特殊的值比如 NaN、{}、[] 等都不會返回假值)字符串和數(shù)組的 indexOf 函數(shù)查找失敗會返回 -1,這時候就可以用 if(~str.indexOf(’str’)) // 來表示找到了比判斷 >= 0 或者 != -1 更優(yōu)雅,跟用 !! 來判斷非假值有異曲同工之妙
作者:mdluo鏈接:https://www.zhihu.com/questio...
取整是把浮點數(shù)轉化了32位二進制整數(shù),所以能還原狀態(tài)的位操作都能進行取整,如23.5 >> 0 //23、23.5 >> 0 //23。
標簽:
JavaScript
相關文章:
1. javascript - jquery怎么給select option一個點擊時觸發(fā)的事件,如圖 如果選擇自定義觸發(fā)一個時間?2. javascript - 怎樣限制同一個瀏覽器不能登錄兩個賬號3. nginx配置server模塊的問題4. java - android代碼重構:如何把app設置里的頭像UI做成通用的?5. 想找個php大神仿個網(wǎng)站。6. java - 新手做一個安卓視頻播放器,想實現(xiàn)一個進度條,按鈕那種在視頻下方懸浮的功能,不知道思路!7. javascript - angular和jquery都用到了$符號,一起用會不會沖突?8. css3 - Typecho 后臺部分表單按鈕在 Chrome 下出現(xiàn)靈異動畫問題,求解決9. mysql優(yōu)化 - 關于mysql分區(qū)10. 如何將行內(nèi)塊元素的內(nèi)容垂直水平兩個方向居中?
排行榜

熱門標簽