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


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 ajaxSubmit 异步提交的简单实现
Feb 28 Javascript
jQuery实现延迟跳转的方法
Jun 05 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
Nov 26 Javascript
javascript实现数组去重的多种方法
Mar 14 Javascript
JS脚本实现动态给标签控件添加事件的方法
Jun 02 Javascript
网页挂马方式整理及详细介绍
Nov 03 Javascript
使用JavaScript实现表格编辑器(实例讲解)
Aug 02 Javascript
vue语法之拼接字符串的示例代码
Oct 25 Javascript
Node.js中环境变量process.env的一些事详解
Oct 26 Javascript
js运算符的一些特殊用法
Jul 29 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
May 07 Javascript
一篇文章了解正则表达式的替换技巧
Feb 24 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
简单的过滤字符串中的HTML标记
2006/12/25 PHP
PHP XML备份Mysql数据库
2009/05/27 PHP
elgg 获取文件图标地址的方法
2010/03/20 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
php实现word转html的方法
2016/01/22 PHP
PHP QRCODE生成彩色二维码的方法
2016/05/19 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
PHP微商城开源代码实例
2019/03/27 PHP
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
nodejs入门教程四:URL相关模块用法分析
2017/04/24 NodeJs
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
Python上下文管理器全实例详解
2019/11/12 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
Servlet方面面试题
2016/09/28 面试题
酒店办公室文员岗位职责
2013/12/18 职场文书
技术股份合作协议书
2014/10/05 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
java中重写父类方法加不加@Override详解
2021/06/21 Java/Android