详解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 相关文章推荐
JavaScript高级程序设计 错误处理与调试学习笔记
Sep 10 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
Oct 18 Javascript
纯JS实现根据CSS的class选择DOM
Mar 22 Javascript
纯js模拟div层弹性运动的方法
Jul 27 Javascript
JavaScript中eval函数的问题
Jan 31 Javascript
详解AngularJS过滤器的使用
Mar 11 Javascript
第十章之巨幕页头缩略图与警告框组件
Apr 25 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
Dec 12 Javascript
在vue中获取dom元素内容的方法
Jul 10 Javascript
Vue.js上下滚动加载组件的实例代码
Jul 17 Javascript
Vue弹出菜单功能的实现代码
Sep 12 Javascript
JavaScript显式数据类型转换详解
Mar 18 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的explode和implode的使用说明
2011/07/17 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
php实现求相对时间函数
2015/06/15 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
老生常谈PHP位运算的用途
2017/03/12 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
Python使用matplotlib绘制动画的方法
2015/05/20 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
SQL数据库笔试题
2016/03/08 面试题
生物制药自我鉴定
2014/01/25 职场文书
周年庆促销方案
2014/03/15 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
考博导师推荐信范文
2015/03/27 职场文书
培训讲师开场白
2015/06/01 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
创业计划书之农家乐
2019/10/09 职场文书
Nginx 常用配置
2022/05/15 Servers