摘要:取反運算形式上是一個感嘆號,用于將布爾值變?yōu)橄喾粗导醋兂勺兂?。對于非布爾值的?shù)據(jù)取反運算符會自動將其轉成布爾值。如果對一個值連續(xù)兩次取反運算,等于將其轉成對應的布爾值,于函數(shù)的作用都相同。
取反運算形式上是一個感嘆號,用于將布爾值變?yōu)橄喾粗?即true變成false,false變成true。
!true //false
!false //true
對于非布爾值的數(shù)據(jù),取反運算符會自動將其轉成布爾值。規(guī)則是,以下六個值取反后為true,其他值取反后都為false。
undefined
null
false
0(包括+0和-0)
NaN
空字符串("")
這意味著,取反運算符有轉換數(shù)據(jù)類型的作用。
!undefined // true
!null // true
!0 // true
!NaN // true
!"" // true
!54 // false
!"hello" // false
![] // false
!{} // false
上面代碼中,不管什么類型的值,經(jīng)過取反運算后,都變成了布爾值。
如果對一個值連續(xù)兩次取反運算,等于將其轉成對應的布爾值,于Boolean函數(shù)的作用都相同。這是一種常用的類型轉換的寫法。
!!x
// 等同于
Boolean(x)
上面代碼中,不管X是什么類型的值,經(jīng)過兩次取反運算后,變成了與Boolean函數(shù)結果相同的布爾值。所以,兩次取反就是將一個值轉成布爾值的簡便寫法。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/103259.html
摘要:原碼補碼和反碼原碼一個數(shù)在計算機中是以二進制的形式存在的,其中第一位存放符號正數(shù)為負數(shù)為。中的位運算在中按位操作符會將其操作數(shù)轉成補碼形式的有符號位整數(shù)。原文鏈接由扯到中的位運算 這個話題的由來是2016年3月份的時候 NPM 社區(qū)發(fā)生了‘left-pad’事件,不久后社區(qū)就有人發(fā)布了用來補救的,也是現(xiàn)在大家能用到的 left-pad 庫。 最開始這個庫的代碼是這樣的。 module....
摘要:按位取反按位取反運算符,對一個表達式執(zhí)行位非求非運算。如果語句后面不使用標簽,則只能進入下一輪的內(nèi)層循環(huán)。語句用于立即終止本輪循環(huán),返回循環(huán)結構的頭部,開始下一輪循環(huán)。代表的是分組,即小括號里面的小正則捕獲到的內(nèi)容。 JS按位取反 Javascript 按位取反運算符 (~) ,對一個表達式執(zhí)行位非(求非)運算。如 ~1 = -2; ~2 = -3;來看看~1的計算步驟: 將1(這里...
摘要:業(yè)務越復雜,邏輯就越復雜,判斷就越多比較判斷比較判斷是比較兩個值,返回一個布爾值,表示是否滿足比較條件。對于非布爾值的數(shù)據(jù),取反運算符會自動將其轉為布爾值。 前端學習:教程&開發(fā)模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:========== JavaScript-判斷 代碼中,多多少少會有判斷語句。業(yè)務越復雜,邏輯就越...
摘要:第二個問題非基礎類型則不好處理,其實像這種比較的方法,往往不是用于處理普遍情況的,往往是在特殊場景發(fā)揮奇效的。沒有最好的方案,只有最合適的方案。這樣才能使得正數(shù)和負數(shù)的表示統(tǒng)一起來,具體可以參閱補碼的歷史,這里不過多展開了。 原文: https://github.com/HCThink/h-... github 首頁(star+watch,一手動態(tài)直達): https://gith...
閱讀 2082·2023-04-25 21:11
閱讀 2971·2021-09-30 09:47
閱讀 2284·2021-09-24 09:48
閱讀 4445·2021-08-23 09:43
閱讀 904·2019-08-30 15:54
閱讀 571·2019-08-28 18:01
閱讀 1409·2019-08-27 10:55
閱讀 595·2019-08-27 10:55