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


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获取页面input控件中所有text控件并追加样式属性
Feb 25 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
Dec 19 Javascript
JQuery中DOM实现事件移除的方法
Jun 13 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
Sep 20 Javascript
简单实现js悬浮导航效果
Feb 05 Javascript
flag和jq on 的绑定多个对象和方法(必看)
Feb 27 Javascript
JavaScript中闭包的详解
Apr 01 Javascript
原生JS实现圆环拖拽效果
Apr 07 Javascript
Angular2 组件交互实例详解
Aug 24 Javascript
基于jquery的on和click的区别详解
Jan 15 jQuery
vuex操作state对象的实例代码
Apr 25 Javascript
ES6的解构赋值实例详解
May 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
gulp-htmlmin压缩html的gulp插件实例代码
Jun 06 #Javascript
node.js cookie-parser 中间件介绍
Jun 06 #Javascript
JavaScript 对象字面量讲解
Jun 06 #Javascript
You might like
常见的PHP五种设计模式小结
2011/03/23 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
python基础教程之字典操作详解
2014/03/25 Python
Python中使用dom模块生成XML文件示例
2015/04/05 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
使用python 3实现发送邮件功能
2018/06/15 Python
Python变量访问权限控制详解
2019/06/29 Python
django框架使用方法详解
2019/07/18 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
Yahoo-PHP面试题3
2012/01/14 面试题
大学生自我鉴定范文模板
2014/01/21 职场文书
电气自动化个人求职信范文
2014/02/03 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
司法所长先进事迹
2014/06/02 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
Redis的字符串是如何实现的
2021/10/24 Redis