详解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 相关文章推荐
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
Jan 27 Javascript
禁止IE用右键的JS代码
Dec 30 Javascript
jquery选择器大全 全面详解jquery选择器
Mar 06 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
Nov 28 Javascript
jQuery中offset()方法用法实例
Jan 16 Javascript
JavaScript中getUTCSeconds()方法的使用详解
Jun 11 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
Nov 20 Javascript
使用jQuery实现Web页面换肤功能的要点解析
May 12 Javascript
防止重复发送 Ajax 请求
Feb 15 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
Apr 10 Javascript
小程序云开发教程如何使用云函数实现点赞功能
May 18 Javascript
Vue实现商品详情页的评价列表功能
Sep 04 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
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
在vs2010中调试javascript代码方法
2011/02/11 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
pytorch中tensor的合并与截取方法
2018/07/26 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
Python 一句话生成字母表的方法
2019/01/02 Python
详解python调用cmd命令三种方法
2019/07/08 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
教师四风问题整改措施
2014/09/25 职场文书
终止劳动合同协议书
2014/10/05 职场文书
农业生产宣传标语
2014/10/08 职场文书
颐和园英文导游词
2015/01/30 职场文书
高一军训决心书
2015/02/05 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
科级干部培训心得体会
2016/01/06 职场文书
商业计划书范文
2019/04/24 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技