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


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 相关文章推荐
js下弹出窗口的变通
Apr 18 Javascript
用jscript实现新建和保存一个word文档
Jun 15 Javascript
jQuery 打造动态下滑菜单实现说明
Apr 15 Javascript
JavaScript在IE和FF下的兼容性问题
May 19 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
Jul 27 Javascript
微信小程序 video组件详解
Oct 25 Javascript
Vue系列:通过vue-router如何传递参数示例
Jan 16 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
Aug 24 Javascript
微信小程序登录态和检验注册过没的app.js写法
May 22 Javascript
js this 绑定机制深入详解
Apr 30 Javascript
微信小程序视频弹幕发送功能的实现
Dec 28 Javascript
解决vue-router的beforeRouteUpdate不能触发
Apr 14 Vue.js
基于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/01/05 PHP
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
jquery中的on方法使用介绍
2013/12/29 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
JS常用算法实现代码
2016/11/14 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
Python坐标线性插值应用实现
2019/11/13 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
端口镜像是怎么实现的
2014/03/25 面试题
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
企业文明单位申报材料
2014/05/16 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
办公用房租赁协议书
2014/11/29 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书