JavaScript逻辑not运算符详解

  在JavaScript 中,逻辑NOT运算符与C和Java中的逻辑 NOT 运算符相同,都由感叹号(!)表示。与逻辑 OR 和逻辑 AND 运算符不同的是,逻辑 NOT 运算符返回的一定是 Boolean 值

逻辑 NOT 运算符的行为如下:

  • 如果运算数是对象,返回 false
  • 如果运算数是数字 0,返回 true
  • 如果运算数是 0 以外的任何数字,返回 false
  • 如果运算数是 null,返回 true
  • 如果运算数是 NaN,返回 true
  • 如果运算数是 undefined,发生错误
<script type="text/javascript">
     var bFalse = false;//运算数是bool类型的数
     var sRed = "red";//运算数是字符串
     var iZero = 0;//运算数是0
     var iThreeFourFive = 345;//运算数是 0 以外的任何数字
     var oObject = new Object();//对象
     var oNull=null;//运算数是null
     var oUndefined;//运算数是undifined
     var oNaN=parseInt("abc");//使用parseInt方法把尝试字符串abc转换成整数,因为abc不是数字,因此是转不了的,所以返回的结果就是NaN

     /*
     writeln() 方法与 write() 方法几乎一样,差别仅在于是前者将在所提供的任何字符串后添加一个换行符。在HTML中,这通常只会在后面产生一个空格;
     不过如果使用了 <PRE> 和 <XMP> 标识,这个换行符会被解释,且在浏览器中显示。
     */
    document.writeln("<XMP>");
    document.writeln("oNaN=parseInt(\"abc\")返回的结果是"+oNaN);//NaN
    document.writeln("bool类型的数false与!运算符运算之后的结果是:" + (!bFalse));//true
    document.writeln("字符串sRed与!运算符运算之后的结果是: " + (!sRed));//false
    document.writeln("数字0与!运算符运算之后的结果是:" + (!iZero));//如果运算数是数字 0,返回 true
    document.writeln("数字345与!运算符运算之后的结果是:" + (!iThreeFourFive));//如果运算数是 0 以外的任何数字,返回 false
    document.writeln("对象oObject与!运算符运算之后的结果是:" + (!oObject));//如果运算数是对象,返回 false
    document.writeln("NaN与!运算符运算之后的结果是:" + (!oNaN));//如果运算数是NaN,返回 true
    document.writeln("null与!运算符运算之后的结果是:" + (!oNull));//如果运算数是 null,返回 true
    document.writeln("undifined与!运算符运算之后的结果是:" + (!oUndefined));//有定义,表示值是"undefined",返回 true
    //document.writeln("未定义的字符串sBule与!运算符运算之后的结果是:" + (!sBule));//sBule前面没有定义,也就是sBule运算数是 undefined,因此这里发生错误
    document.writeln("</XMP>");
  </script>

  判断JavaScript变量的Boolean 值时,也可以使用逻辑NOT运算符。这样做需要在一行代码中使用两个 NOT 运算符。无论运算数是什么类型,第一个NOT运算符返回 Boolean值,第二个NOT将对该Boolean值取反,从而给出变量真正的Boolean值。使用not运算符判断JavaScript变量的Boolean值是一个非常有用的技巧,只要知道了变量的boolean值,那么当使用变量进行 && 或者 || 运算时,就可以很快知道运算的结果了

<script type="text/javascript">
     var bFalse = false;//运算数是bool类型的数
     var sRed = "red";//运算数是字符串
     var iZero = 0;//运算数是0
     var iThreeFourFive = 345;//运算数是 0 以外的任何数字
     var oObject = new Object();//对象
     var oNull=null;//运算数是null
     var oUndefined;//运算数是undifined
     var oNaN=parseInt("abc");//使用parseInt方法把尝试字符串abc转换成整数,因为abc不是数字,因此是转不了的,所以返回的结果就是NaN
    /*
    判断JavaScript 变量的 Boolean 值时,也可以使用逻辑 NOT 运算符。这样做需要在一行代码中使用两个 NOT 运算符。
    无论运算数是什么类型,第一个 NOT 运算符返回 Boolean 值。第二个 NOT 将对该 Boolean 值取反,从而给出变量真正的 Boolean 值。
    */
    document.write("<PRE>");
    document.writeln("布尔数false 的逻辑值是 " + (!!bFalse));
    document.writeln("字符串sRed 的逻辑值是 " + (!!sRed));
    document.writeln("数字0 的逻辑值是 " + (!!iZero));
    document.writeln("数字345 的逻辑值是 " + (!!iThreeFourFive));
    document.writeln("对象Object 的逻辑值是 " + (!!oObject));
    document.writeln("NaN的逻辑值是 :" + (!!oNaN));
    document.writeln("null 的逻辑值是 " + (!!oNull));
    document.writeln("undefined 的逻辑值是 " + (!!oUndefined));
    document.write("</PRE>");
  </script>

时间: 2024-10-11 00:40:01

JavaScript逻辑not运算符详解的相关文章

JavaScript逻辑and运算符详解

一.AND详解: 在JavaScript中,逻辑 AND 运算符用双和号(&&)表示. 需要说明的是:逻辑AND运算的运算数可以是任何类型的,不止是Boolean值,如果某个运算数不是原始的Boolean型值,逻辑AND运算并不一定返回Boolean值. 逻辑AND运算符的运算行为如下: 如果一个运算数是对象,另一个是 Boolean 值,返回该对象. 如果两个运算数都是对象,返回第二个对象. 如果某个运算数是 null,返回 null. 如果某个运算数是 NaN,返回 NaN. 如果某个

JavaScript学习总结(四)——逻辑OR运算符详解

在JavaScript中,逻辑OR运算符用||表示 1 var bTrue = true; 2 var bFalse = false; 3 var bResult = bTrue || bFalse; 下面的真值表描述了逻辑AND运算符的行为: 运算数 1 运算数 2 结果 true true true true false true false true true false false false 在JavaScript中,0,"",false,null,undefined,NaN

zerglurker的C语言教程009——运算符详解(一)

在之前几节我们讲过数据类型.讲过函数.讲过代码执行顺序以及一些添加简单函数的方法. 这一节我们将着重讲讲运算符.包括运算符的含义以及优先级的概念 在C语言中,以下运算符是被公认的: C/C++语言运算符详解 优先级 运算符 名称以及含义 运算目 使用示例 结合方向 可否重载 附加说明 无 () 圆括弧 单目 (表达式) 无 否 括弧内的表达永远先计算 无 dynamic_cast<>() 类型动态转化 单目 dynamic_cast<目标类型>(源) 无 否 C++专有,不能转换返

JavaScript 开发规范要求详解

作为一名开发人员(We前端JavaScript开发),不规范的开发不仅使日后代码维护变的困难,同时也不利于团队的合作,通常还会带来代码安全以及执行效率上的问题.本人在开发工作中就曾与不按规范来开发的同事合作过,与他合作就不能用"愉快"来形容了.现在本人撰写此文的目的除了与大家分享一点点经验外,更多的是希望对未来的合作伙伴能够起到一定的借鉴作用.当然,如果我说的有不科学的地方还希望各路前辈多多指教.下面分条目列出各种规范要求,这些要求都是针对同事编码毛病提出来的,好些行业约定的其它规范可

Swift基本运算符详解

运算符是检查,改变,合并值的特殊符号或短语.例如,加号+将两个数相加(如let i = 1 + 2).复杂些的运行算例如逻辑与运算符&&(如if enteredDoorCode && passedRetinaScan),又或让 i 值加1的便捷运算符自增运算符++i等. Swift 支持大部分标准 C 语言的运算符,且改进许多特性来减少常规编码错误.如,赋值符(=)不返回值,以防止把想要判断相等运算符(==)的地方写成赋值符导致的错误.数值运算符(+,-,*,/,%等)会检

java基础(2)--运算符详解

java基础(2)--运算符详解 自增自减规则 自增自减就是常用的 a = a++ 或者 a = ++a;前者是后缀式,先把a赋值给a,再加一:后者是后缀式,先加一,在赋值给a;而且a++,++a并不是原子操作,在当线程环境下并不会出错,当放在多线程下时,就会出现数据错误的问题. public class Test01 { private static int a = 0; private static int b = 0; private static AtomicInteger atomic

Java的位运算符详解实例

Java的位运算符详解实例——与(&).非(~).或(|).异或(^).右移(>>).左移(<<).无符号右移(>>>) 位运算符主要针对二进制, 它包括了:“与”.“非”.“或”.“异或”."右移"."左移"."无符号右移". 从表面上看似乎有点像逻辑运算符, 但逻辑运算符是针对两个关系运算符来进行逻辑运算, 而位运算符主要针对两个二进制数的位进行逻辑运算. 下面详细介绍每个位运算符. 1.与运

java移位运算符详解[转]

java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移). 1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数. 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规则只记住一点:丢弃最高位,0补最低位 如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模.如对int型移动33位,实际上只移动了332=1位. 2)运算规则 按

java移位运算符详解

java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移).1.左移运算符左移运算符<<使指定值的所有位都左移规定的次数.1)它的通用格式如下所示:value << numnum 指定要移位值value 移动的位数.左移的规则只记住一点:丢弃最高位,0补最低位如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模.如对int型移动33位,实际上只移动了332=1位. 2)运算规则按二进制形式把所有的