详解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 相关文章推荐
jQuery 选择器理解
Mar 16 Javascript
一些常用且实用的原生JavaScript函数
Sep 08 Javascript
Dom 结点创建 基础知识
Oct 01 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
Nov 21 Javascript
js打开windows上的可执行文件示例
May 27 Javascript
jquery实现表单输入时提示文字滑动向上效果
Aug 10 Javascript
Knockoutjs 学习系列(二)花式捆绑
Jun 07 Javascript
ES6扩展运算符的用途实例详解
Aug 20 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
Nov 22 Javascript
微信小程序 JS动态修改样式的实现方法
Dec 16 Javascript
VSCode 配置uni-app的方法
Jul 11 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
Jul 24 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/10/09 PHP
php下使用无限生命期Session的方法
2007/03/16 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
node.js实现快速截图
2016/08/27 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
Android面试题附答案
2014/12/08 面试题
求职自荐书范文
2013/12/04 职场文书
汽车维修专业个人求职信范文
2014/01/01 职场文书
七年级地理教学反思
2014/01/26 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
运动会宣传口号
2014/06/09 职场文书
创先争优承诺书
2015/01/20 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
《分数的意义》教学反思
2016/02/20 职场文书
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫