详解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 相关文章推荐
Web 前端设计模式--Dom重构 提高显示性能
Oct 22 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
Feb 23 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
Jun 19 Javascript
详解javascript事件冒泡
Jan 09 Javascript
JS判断是否长按某一键的方法
Mar 02 Javascript
VueJS如何引入css或者less文件的一些坑
Apr 25 Javascript
浅谈react 同构之样式直出
Nov 07 Javascript
尝试自己动手用react来写一个分页组件(小结)
Feb 09 Javascript
Vue.js进阶知识点总结
Apr 01 Javascript
JS实现的视频弹幕效果示例
Aug 17 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
Jul 10 Javascript
node.js使用express-fileupload中间件实现文件上传
Jul 16 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
php开发文档 会员收费1期
2012/08/14 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
jquery validate使用攻略 第四步
2010/07/01 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
JS清除字符串中重复值的实现方法
2016/08/03 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
用python写测试数据文件过程解析
2019/09/25 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
Django Form常用功能及代码示例
2020/10/13 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
Css3圆角边框制作代码
2015/11/18 HTML / CSS
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
优秀的教师个人的中文求职信
2013/09/21 职场文书
个人培训自我鉴定
2014/03/28 职场文书
体育比赛口号
2014/06/09 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
建国大业观后感800字
2015/06/01 职场文书
催款函范文
2015/06/24 职场文书
2019入党申请书格式
2019/06/25 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书
2019年农民幸福观调查的实践感悟
2019/12/19 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电
Android实现图片九宫格
2022/06/28 Java/Android