详解JavaScript逻辑Not运算符


Posted in Javascript onDecember 04, 2015

在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);
 document.writeln("bool类型的数false与!运算符运算之后的结果是:" + (!bFalse));
 document.writeln("字符串sRed与!运算符运算之后的结果是: " + (!sRed));
 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));
 //document.writeln("未定义的字符串sBule与!运算符运算之后的结果是:" + (!sBule));//sBule前面没有定义,也就是sBule运算数是 undefined,因此这里发生错误 
 document.writeln("</XMP>");
 </script>

运行结果:

详解JavaScript逻辑Not运算符

判断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>

详解JavaScript逻辑Not运算符

以上就是关于JavaScript逻辑Not运算符的详细信息,希望对大家的学习有所帮助。

Javascript 相关文章推荐
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
Jun 02 Javascript
node中socket.io的事件使用详解
Dec 15 Javascript
Javascript技术难点之apply,call与this之间的衔接
Dec 04 Javascript
js实现页面跳转的几种方法小结
May 16 Javascript
Three.js的使用及绘制基础3D图形详解
Apr 27 Javascript
three.js加载obj模型的实例代码
Nov 10 Javascript
使用selenium抓取淘宝的商品信息实例
Feb 06 Javascript
vue2.0 实现页面导航提示引导的方法
Mar 13 Javascript
浅谈vue-cli 3.0.x 初体验
Apr 11 Javascript
JS阻止事件冒泡的方法详解
Aug 26 Javascript
Element Steps步骤条的使用方法
Jul 26 Javascript
Openlayers3实现车辆轨迹回放功能
Sep 29 Javascript
简要了解jQuery移动web开发的响应式布局设计
Dec 04 #Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
Dec 04 #Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
Dec 04 #Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
Dec 04 #Javascript
写给小白的JavaScript引擎指南
Dec 04 #Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
Dec 04 #Javascript
jQuery旋转木马式幻灯片轮播特效
Dec 04 #Javascript
You might like
第八节--访问方式
2006/11/16 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
2016/10/12 PHP
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
js的hasownproperty使用示例
2014/03/02 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
大专生自我鉴定范文
2013/10/01 职场文书
毕业生自我鉴定
2013/12/04 职场文书
写自荐信要注意什么
2013/12/26 职场文书
村委会贫困证明范本
2014/09/17 职场文书
工作表扬信
2015/01/17 职场文书
音乐教师个人总结
2015/02/06 职场文书
上课迟到检讨书
2015/05/06 职场文书
靠谱准确的求职信
2019/04/02 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
Python中requests做接口测试的方法
2021/05/30 Python
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python
Python装饰器详细介绍
2022/03/25 Python