逻辑表达式中与或非的用法详解


Posted in Javascript onJune 06, 2016

先说逻辑与(&&),它可以从三个层次进行理解

第一个层次最简单,就是简单的布尔值之间的逻辑与,就是左值和右值都是true时,返回true,两边都是false或者两边的值其中一边是fasle,就返回false;(AND操作);

第二个层次,(false,null,indefined,0,-0,NaN和""这些都是假值,其他所有的值包括对象都是真值),对这些"真值"和"假值"进行AND操作,返回一个"真值"或者"假值";

值得注意的是,(&&)并不返回一直的是布尔值,他会返回第二个层次出现的真值或者假值,,但是这些"真值"和"假值"到底是什么值呢?所以引入第三层的理解

第三个层次的理解,其实也简单,当语句中的左操作数是假值时,就不对语句的右操作数进行运算了,直接返回左操作数作为表达式的运算结果;当左操作数是真值时,将右操作数的值返回,作为表达式的运算结果,

举个例子如下:

var o={s:1}; //创建一个对象
var p=null; //创建了一个null
o&&o.s //返回1,应为o是真值,所以返回o.s的值
p&&p.x //返回null,应为p是假值,所以不去计算p.x,直接返回p的值 <br>o&&o.b; //这样会抛出一个类型错误异常,因为o为真值,需要返回o.b,但是o.b并不存在,

这样就好理解了

虽然&&可以用来返回真值和假值,但是大多数情况下,真值就是true,假值就是false;

再说一下逻辑或(||),举一反三,逻辑与也有与逻辑或类似的三个层次理解,就不详细写了

逻辑与最常用的方法是从一群备选的操作数中选出一个真值的表达式

举个例子

var min =min_value||sum.min_value||100;

先找到min_value,如果它没有定义,那就在sum对象中查找,如果还没有,只能给它赋值一个死值100,

这种方法通常用在函数中给参数设置默认值

举个例子

function add(a,b){
b=b||0;
return a+b; 
}

当不对b设置初始值时,b等于0;add函数返回的就是a+0,也就是a的值;

逻辑非(!)

他的目的是将操作数的布尔值进行求反,例如:如果x是真值,!x返回false,如果x是假值,!x返回true。

返回布尔值时,已经将这些真值啊,假值啊转换成了布尔值,再对其进行求反。

这里介绍一种!的常见用法

有时候我们需要对一个变量查检其是否存在或者检查值是否有一个有效值,就使用!!,

例如,检测一个从一个函数返回的值student是否是个有效值,就使用 !!student,如果他返回是true,那么他就是一个有效值。

以上所述是小编给大家介绍的逻辑表达式中与或非的用法详解的相关知识,希望对大家有所帮助!

Javascript 相关文章推荐
javascript在网页中实现读取剪贴板粘贴截图功能
Jun 07 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
Dec 01 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
Jun 01 jQuery
Angular如何引入第三方库的方法详解
Jul 13 Javascript
js 获取json数组里面数组的长度实例
Oct 31 Javascript
JS中的BOM应用
Feb 02 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
Mar 06 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
Nov 05 Javascript
Vue中rem与postcss-pxtorem的应用详解
Nov 20 Javascript
微信小程序swiper左右扩展各显示一半代码实例
Dec 05 Javascript
这样回答继承可能面试官更满意
Dec 10 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
Jan 28 Javascript
node.js 中国天气预报 简单实现
Jun 06 #Javascript
JS中mouseover和mouseout多次触发问题如何解决
Jun 06 #Javascript
js获取元素的外链样式的简单实现方法
Jun 06 #Javascript
node.js cookie-parser之parser.js
Jun 06 #Javascript
gulp-htmlmin压缩html的gulp插件实例代码
Jun 06 #Javascript
node.js cookie-parser 中间件介绍
Jun 06 #Javascript
JavaScript 对象字面量讲解
Jun 06 #Javascript
You might like
简单的PHP图片上传程序
2008/03/27 PHP
php数据库连接时容易出错的特殊符号问题
2010/09/01 PHP
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
2017/03/23 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
详解python3实现的web端json通信协议
2016/12/29 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
Django 视图层(view)的使用
2018/11/09 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
通信研究生自荐信
2014/02/01 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
校外活动方案
2014/08/28 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
企业介绍信范文
2015/01/30 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
2016春节慰问信范文
2015/03/25 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
关于感恩的作文
2019/08/26 职场文书
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
2021/03/31 HTML / CSS
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
HTML+JS实现在线朗读器
2022/02/15 Javascript