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


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 相关文章推荐
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
Apr 27 Javascript
js中浮点型运算BUG的解决方法说明
Jan 06 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
Mar 03 Javascript
JS实现动态给图片添加边框的方法
Apr 01 Javascript
javascript 继承学习心得总结
Mar 17 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
Jun 08 Javascript
js数组去重的hash方法
Dec 22 Javascript
Bootstrap中datetimepicker使用小结
Dec 28 Javascript
javascript遍历json对象的key和任意js对象属性实例
Mar 09 Javascript
详解在React中跨组件分发状态的三种方法
Aug 09 Javascript
如何在vue中使用jointjs过程解析
May 29 Javascript
js实现盒子拖拽动画效果
Aug 09 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
xajax写的留言本
2006/11/25 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
php模拟post提交数据的方法
2015/02/12 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
JavaScript 语言的递归编程
2010/05/18 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
django的settings中设置中文支持的实现
2019/04/28 Python
python能开发游戏吗
2020/06/11 Python
Django如何实现防止XSS攻击
2020/10/13 Python
调解协议书
2014/04/16 职场文书
地震捐款倡议书
2014/08/29 职场文书
个人委托书如何写
2014/09/25 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
初中数学教学反思范文
2016/02/17 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
python爬取新闻门户网站的示例
2021/04/25 Python
聊聊golang中多个defer的执行顺序
2021/05/08 Golang