深入理解逻辑表达式的用法 与或非的用法


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 相关文章推荐
jquery 双色表格实现代码
Dec 08 Javascript
基于Jquery的简单&amp;简陋Tabs插件代码
Feb 09 Javascript
影响jQuery使用的14个方面
Sep 01 Javascript
Jquery实现仿京东商城省市联动菜单
Nov 19 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
Jul 11 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
canvas实现绘制吃豆鱼效果
Jan 12 Javascript
JavaScript 函数的定义-调用、注意事项
Apr 16 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
Sep 14 Javascript
angular之ng-template模板加载
Nov 09 Javascript
mpvue 项目初始化及实现授权登录的实现方法
Jul 20 Javascript
js实现电灯开关效果
Jan 19 Javascript
基于JS实现数字+字母+中文的混合排序方法
Jun 06 #Javascript
jquery树形菜单效果的简单实例
Jun 06 #Javascript
逻辑表达式中与或非的用法详解
Jun 06 #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
You might like
PHP 文件缓存的性能测试
2010/04/25 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
webpack4打包vue前端多页面项目
2018/09/17 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
python+opencv识别图片中的圆形
2020/03/25 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
简单了解python反射机制的一些知识
2019/07/13 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
台湾流行服饰购物平台:OB严选
2018/01/21 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
2013年入党人员的自我鉴定
2013/10/25 职场文书
制定岗位职责的原则
2013/11/08 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
门面租赁合同范文
2019/08/06 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫