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


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小技巧
Jul 21 Javascript
细品javascript 寻址,闭包,对象模型和相关问题
Apr 27 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
Jul 04 Javascript
JQuery结合CSS操作打印样式的方法
Dec 24 Javascript
与Math.pow 相反的函数使用介绍
Aug 04 Javascript
js实现背景图片感应鼠标变化的方法
Feb 28 Javascript
基于jquery实现ajax无刷新评论
Aug 19 Javascript
jQuery操作动态生成的内容的方法
May 28 Javascript
解决vue跨域axios异步通信问题
Apr 17 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
May 07 Javascript
vue 开发企业微信整合案例分析
Dec 02 Javascript
nestjs返回给前端数据格式的封装实现
Feb 22 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 判断常量,变量和函数是否存在
2009/04/26 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
实例讲解php将字符串输出到HTML
2019/01/27 PHP
php生成word并下载代码实例
2019/03/15 PHP
什么是JavaScript
2009/08/13 Javascript
javascript parseInt 大改造
2009/09/27 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
让 python 命令行也可以自动补全
2014/11/30 Python
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
python实现图片转字符小工具
2019/04/30 Python
简单了解python关系(比较)运算符
2019/07/08 Python
通过python3实现投票功能代码实例
2019/09/26 Python
Tensorflow累加的实现案例
2020/02/05 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
2020/09/20 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
便利店投资的创业计划书
2014/01/12 职场文书
感恩母亲节活动方案
2014/03/04 职场文书
春风行动实施方案
2014/03/28 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
预备党员党支部意见
2015/06/02 职场文书
行政处罚告知书
2015/07/01 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL