詳解JavaScript邏輯Not運算符
在JavaScript 中,邏輯NOT運算符與C和Java中的邏輯 NOT 運算符相同,都由感嘆號(!)表示。與邏輯 OR 和邏輯 AND 運算符不同的是,邏輯 NOT 運算符返回的一定是 Boolean 值。
邏輯 NOT 運算符的行為如下:
- 如果運算數(shù)是對象,返回 false
- 如果運算數(shù)是數(shù)字 0,返回 true
- 如果運算數(shù)是 0 以外的任何數(shù)字,返回 false
- 如果運算數(shù)是 null,返回 true
- 如果運算數(shù)是 NaN,返回 true
- 如果運算數(shù)是 undefined,發(fā)生錯誤
測試腳本如下:
<script type="text/javascript"> var bFalse = false;//運算數(shù)是bool類型的數(shù) var sRed = "red";//運算數(shù)是字符串 var iZero = 0;//運算數(shù)是0 var iThreeFourFive = 345;//運算數(shù)是 0 以外的任何數(shù)字 var oObject = new Object();//對象 var oNull=null;//運算數(shù)是null var oUndefined;//運算數(shù)是undifined var oNaN=parseInt("abc");//使用parseInt方法把嘗試字符串a(chǎn)bc轉(zhuǎn)換成整數(shù),因為abc不是數(shù)字,因此是轉(zhuǎn)不了的,所以返回的結(jié)果就是NaN /* writeln() 方法與 write() 方法幾乎一樣,差別僅在于是前者將在所提供的任何字符串后添加一個換行符。在HTML中,這通常只會在后面產(chǎn)生一個空格; 不過如果使用了 <PRE> 和 <XMP> 標(biāo)識,這個換行符會被解釋,且在瀏覽器中顯示。 */ document.writeln("<XMP>"); document.writeln("oNaN=parseInt(\"abc\")返回的結(jié)果是"+oNaN); document.writeln("bool類型的數(shù)false與!運算符運算之后的結(jié)果是:" + (!bFalse)); document.writeln("字符串sRed與!運算符運算之后的結(jié)果是: " + (!sRed)); document.writeln("數(shù)字0與!運算符運算之后的結(jié)果是:" + (!iZero));//如果運算數(shù)是數(shù)字 0,返回 true document.writeln("數(shù)字345與!運算符運算之后的結(jié)果是:" + (!iThreeFourFive));//如果運算數(shù)是 0 以外的任何數(shù)字,返回 false document.writeln("對象oObject與!運算符運算之后的結(jié)果是:" + (!oObject));//如果運算數(shù)是對象,返回 false document.writeln("NaN與!運算符運算之后的結(jié)果是:" + (!oNaN));//如果運算數(shù)是NaN,返回 true document.writeln("null與!運算符運算之后的結(jié)果是:" + (!oNull));//如果運算數(shù)是 null,返回 true document.writeln("undifined與!運算符運算之后的結(jié)果是:" + (!oUndefined)); //document.writeln("未定義的字符串sBule與!運算符運算之后的結(jié)果是:" + (!sBule));//sBule前面沒有定義,也就是sBule運算數(shù)是 undefined,因此這里發(fā)生錯誤 document.writeln("</XMP>"); </script>
運行結(jié)果:
判斷JavaScript變量的Boolean 值時,也可以使用邏輯NOT運算符。這樣做需要在一行代碼中使用兩個 NOT 運算符。無論運算數(shù)是什么類型,第一個NOT運算符返回 Boolean值,第二個NOT將對該Boolean值取反,從而給出變量真正的Boolean值。使用not運算符判斷JavaScript變量的Boolean值是一個非常有用的技巧,只要知道了變量的boolean值,那么當(dāng)使用變量進行&&或者||運算時,就可以很快知道運算的結(jié)果了。
測試腳本如下:
<script type="text/javascript"> var bFalse = false;//運算數(shù)是bool類型的數(shù) var sRed = "red";//運算數(shù)是字符串 var iZero = 0;//運算數(shù)是0 var iThreeFourFive = 345;//運算數(shù)是 0 以外的任何數(shù)字 var oObject = new Object();//對象 var oNull=null;//運算數(shù)是null var oUndefined;//運算數(shù)是undifined var oNaN=parseInt("abc");//使用parseInt方法把嘗試字符串a(chǎn)bc轉(zhuǎn)換成整數(shù),因為abc不是數(shù)字,因此是轉(zhuǎn)不了的,所以返回的結(jié)果就是NaN /* 判斷JavaScript 變量的 Boolean 值時,也可以使用邏輯 NOT 運算符。這樣做需要在一行代碼中使用兩個 NOT 運算符。 無論運算數(shù)是什么類型,第一個 NOT 運算符返回 Boolean 值。第二個 NOT 將對該 Boolean 值取反,從而給出變量真正的 Boolean 值。 */ document.write("<PRE>"); document.writeln("布爾數(shù)false 的邏輯值是 " + (!!bFalse)); document.writeln("字符串sRed 的邏輯值是 " + (!!sRed)); document.writeln("數(shù)字0 的邏輯值是 " + (!!iZero)); document.writeln("數(shù)字345 的邏輯值是 " + (!!iThreeFourFive)); document.writeln("對象Object 的邏輯值是 " + (!!oObject)); document.writeln("NaN的邏輯值是 :" + (!!oNaN)); document.writeln("null 的邏輯值是 " + (!!oNull)); document.writeln("undefined 的邏輯值是 " + (!!oUndefined)); document.write("</PRE>"); </script>
以上就是關(guān)于JavaScript邏輯Not運算符的詳細(xì)信息,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
JS 排序輸出實現(xiàn)table行號自增前端動態(tài)生成的tr
一個項目,需要對數(shù)據(jù)進行排序輸出,要求有行號,依次遞增1.2.3.4.5,使用前端動態(tài)生成的tr2014-08-08Javascript實現(xiàn)購物車功能的詳細(xì)代碼
這篇文章使用js實現(xiàn)購物車的價格計算,商品數(shù)量更換,商品刪除等功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05js自動閉合html標(biāo)簽(自動補全html標(biāo)記)
假如我有一個DIV,如果沒有閉合后面的樣式都會亂了,這樣的代碼可能會影響后面的樣式,我希望用JS去自動閉合這種沒有閉合的標(biāo)簽2012-10-10