详解JavaScript逻辑And运算符


Posted in Javascript onDecember 04, 2015

在JavaScript中,逻辑 AND 运算符用双和号(&&)表示

var bTrue = true;
var bFalse = false;
var bResult = bTrue && bFalse;

下面的真值表描述了逻辑AND运算符的行为:

详解JavaScript逻辑And运算符

需要说明的是:逻辑AND运算的运算数可以是任何类型的,不止是Boolean值,如果某个运算数不是原始的Boolean型值,逻辑AND运算并不一定返回Boolean值

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

  • 如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
  • 如果两个运算数都是对象,返回第二个对象。
  • 如果某个运算数是 null,返回 null。
  • 如果某个运算数是 NaN,返回 NaN。
  • 如果某个运算数是 undefined,发生错误。
  • 如果两个运算数都是boolean类型,则返回boolean值

与Java中的逻辑AND运算相似,JavaScript 中的逻辑AND运算也是简便运算,即如果第一个运算数决定了结果,就不再计算第二个运算数。对于逻辑AND运算来说,如果第一个运算数是false,那么无论第二个运算数的值是什么,结果都不可能等于true。

考虑下面的例子:

var bTrue = true;
var bResult = (bTrue && bUnknown); //发生错误
alert(bResult); //这一行不会执行

代码运行结果:

详解JavaScript逻辑And运算符

这段代码在进行逻辑 AND 运算时将引发错误,因为变量 bUnknown 是未定义的。变量 bTrue 的值为 true,因为逻辑 AND 运算将继续计算变量 bUnknown。这样做就会引发错误,因为 bUnknown 的值是 undefined,不能用于逻辑 AND 运算。
    如果修改这个例子,把第一个数设为 false,那么就不会发生错误:

var bTrue = false;
var bResult = (bTrue && bUnknown); //不会发生错误
alert("bTrue && bUnknown的结果是:"+(bResult));//输出 "false"

在这段代码中,脚本将输出逻辑AND运算返回的值,即字符串"false"。即使变量 bUnknown 的值为 undefined,它也不会被计算,因为第一个运算数的值是 false。

运行结果:

详解JavaScript逻辑And运算符

验证JavaScript逻辑And运算符的运算行为

测试代码:

<script type="text/javascript">
  document.write("验证JavaScript逻辑And运算符的运算行为:");
  document.write("<br/>");
  document.write("-----------------------------------------------------------------------------");
  document.write("<br/>");

  var bTrue = true;
  var bFalse = false;
  var bResult = bTrue && bFalse;
  /*1.如果两个运算数都是boolean类型,则返回boolean值*/
  document.write("1.如果两个运算数都是boolean类型,则返回boolean值");
  document.write("<br/>");
  document.write("-----------------------------------------------------------------------------");
  document.write("<br/>");
  document.write("bTrue = true,bFalse = false,bTrue && bFalse的结果是:"+(bResult));//结果为false
  document.write("<br/>");

  document.write("-----------------------------------------------------------------------------");
  document.write("<br/>");

  var obj = new Object();
  /*2.如果一个运算数是对象,另一个是 Boolean 值,返回该对象*/
  document.write("2.如果一个运算数是对象,另一个是 Boolean 值,返回该对象");
  document.write("<br/>");
  document.write("-----------------------------------------------------------------------------");
  document.write("<br/>");
  document.write("obj是一个对象,true&&obj的结果是:"+(true&&obj));
  document.write("<br/>");
  document.write("obj==true&&obj的结果是:"+(obj==(true&&obj)));
  document.write("<br/>");
  document.write("false&&obj的结果是:"+(false&&obj));
  document.write("<br/>");

  document.write("-----------------------------------------------------------------------------");
  document.write("<br/>");
  /*3.如果两个运算数都是对象,返回第二个对象。*/
  var obj1 = new Object();
  var obj2 = new Object();
  document.write("3.如果两个运算数都是对象,返回第二个对象。");
  document.write("<br/>");
  document.write("-----------------------------------------------------------------------------");
  document.write("<br/>");
  document.write("obj1是一个对象,obj2是一个对象,obj1==(obj1&&obj2)的结果是:"+(obj1==(obj1&&obj2)));//结果为false
  document.write("<br/>");
  document.write("obj1是一个对象,obj2是一个对象,obj2==(obj1&&obj2)的结果是:"+(obj2==(obj1&&obj2)));//结果为true
  document.write("<br/>");

  document.write("-----------------------------------------------------------------------------");
  document.write("<br/>");
  /*4.如果某个运算数是 null,返回null。*/
  var a=null;
  var b=true;
  document.write("4.如果某个运算数是 null,返回null。");
  document.write("<br/>");
  document.write("a=null,b=true,a&&b的结果是:"+(a&&b));
  document.write("<br/>");
  document.write("-----------------------------------------------------------------------------");
  document.write("<br/>");
  /*5.如果某个运算数是NaN,返回NaN*/
   var c = NaN;
   var d = "str";
  document.write("5.如果某个运算数是NaN,返回NaN");
  document.write("<br/>");
  document.write("c=NaN,d=str,c&&d的结果是:"+(c&&d));
  document.write("<br/>");
  document.write("-----------------------------------------------------------------------------");
  document.write("<br/>");
  /*
  6.JavaScript中的逻辑 AND 运算是简便运算,即如果第一个运算数决定了结果,就不再计算第二个运算数。
  对于逻辑 AND 运算来说,如果第一个运算数是 false,那么无论第二个运算数的值是什么,结果都不可能等于 true。
  */
  var bFalse = false;
  var bResult = (bFalse && bUnknown);
  document.write("6.JavaScript中的逻辑 AND 运算是简便运算,即如果第一个运算数决定了结果,就不再计算第二个运算数");
  document.write("<br/>");
  document.write("对于逻辑 AND 运算来说,如果第一个运算数是 false,那么无论第二个运算数的值是什么,结果都不可能等于 true。");
  document.write("<br/>");
  document.write("bFalse=false,bUnknown是一个未定义的变量,bFalse && bUnknown的结果是:"+(bResult)); //输出 "false"

  var bTrue = true;
  var bResult = (bTrue && bUnknown);  //发生错误
  alert(bResult);      //这一行不会执行
 </script>

详解JavaScript逻辑And运算符

以上就是关于JavaScript逻辑And运算符的全部介绍,希望能够帮助到大家更好的学习js的逻辑运算符。

Javascript 相关文章推荐
用jscript实现新建和保存一个word文档
Jun 15 Javascript
一样的table?不一样的table(可编辑状态table)
Sep 19 Javascript
javascript获取选中的文本的方法代码
Oct 30 Javascript
JavaScript中Math对象方法使用概述
Jan 02 Javascript
jquery如何判断表格同一列不同行input数据是否重复
May 14 Javascript
使用Plupload实现直接上传附件至七牛云存储
Dec 26 Javascript
浅谈Javascript数组索引
Jul 29 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
Jun 13 Javascript
利用Javascript实现BMI计算器
Aug 16 Javascript
基于canvas的二维码邀请函生成插件
Feb 14 Javascript
JS与SQL方式随机生成高强度密码示例
Dec 29 Javascript
JavaScript代理模式原理与用法实例详解
Mar 10 Javascript
JavaScript encodeURI 和encodeURIComponent
Dec 04 #Javascript
详解JavaScript逻辑Not运算符
Dec 04 #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
You might like
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
python实现梯度下降法
2020/03/24 Python
opencv 阈值分割的具体使用
2020/07/08 Python
Python的logging模块基本用法
2020/12/24 Python
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
求职个人评价范文
2014/04/09 职场文书
服务员态度差检讨书
2014/10/28 职场文书
2014年英语工作总结
2014/12/20 职场文书
法制教育主题班会
2015/08/13 职场文书
安全生产标语口号
2015/12/26 职场文书
银行培训心得体会范文
2016/01/09 职场文书
一行Python命令实现批量加水印
2022/04/07 Python