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


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中的window.open返回object的错误的解决方法
Aug 15 Javascript
jQuery中add()方法用法实例
Jan 08 Javascript
JavaScript中setFullYear()方法的使用详解
Jun 11 Javascript
jQuery实现的网格线绘制方法
Jun 20 Javascript
js实现字符全排列算法的简单方法
May 01 Javascript
原生js+cookie实现购物车功能的方法分析
Dec 21 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
Dec 28 Javascript
详解js的作用域、预解析机制
Feb 05 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
Feb 21 Javascript
详解Vue之父子组件传值
Apr 01 Javascript
基于JS实现快速读取TXT文件
Aug 25 Javascript
JavaScript选择器函数querySelector和querySelectorAll
Nov 27 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.MVC的模板标签系统(二)
2006/09/05 PHP
十天学会php之第六天
2006/10/09 PHP
php strrpos()与strripos()函数
2013/08/31 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
PHP QRCODE生成彩色二维码的方法
2016/05/19 PHP
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
2013/10/15 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
python中将字典形式的数据循环插入Excel
2018/01/16 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
Python chardet库识别编码原理解析
2020/02/18 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
Django实现内容缓存实例方法
2020/06/30 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
院药学专业个人求职信
2013/09/21 职场文书
员工晚婚的请假条
2014/02/08 职场文书
减负增效提质方案
2014/05/23 职场文书
课内比教学心得体会
2014/09/09 职场文书
档案工作个人总结
2015/03/03 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript