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


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 相关文章推荐
IE的fireEvent方法概述及应用
Feb 22 Javascript
Jquery焦点与失去焦点示例应用
Jun 10 Javascript
一款基jquery超炫的动画导航菜单可响应单击事件
Nov 02 Javascript
JavaScript学习笔记之内置对象
Jan 22 Javascript
angularJS 中input示例分享
Feb 09 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
Jun 18 Javascript
jQuery实现的调整表格行tr上下顺序
Jan 10 Javascript
jQuery UI仿淘宝搜索下拉列表功能
Jan 10 Javascript
简单谈谈JS中的正则表达式
Sep 11 Javascript
vue+springboot实现项目的CORS跨域请求
Sep 05 Javascript
webpack dll打包重复问题优化的解决
Oct 10 Javascript
微信小程序实现带放大效果的轮播图
May 26 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实现的漂亮分页方法
2014/04/17 PHP
如何写php守护进程(Daemon)
2015/12/30 PHP
php中的异常和错误浅析
2017/05/03 PHP
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
Vue filter介绍及其使用详解
2017/10/21 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
关于js陀螺仪的理解分析
2019/04/11 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
2019/06/10 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
详解JavaScript执行模型
2020/11/16 Javascript
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
python socket 超时设置 errno 10054
2014/07/01 Python
用Python进行TCP网络编程的教程
2015/04/29 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
党员服务承诺书
2014/05/28 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
2014年稽查工作总结
2014/12/20 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python