深入理解逻辑表达式的用法 与或非的用法


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 相关文章推荐
基于jQuery的仿flash的广告轮播
Nov 05 Javascript
基于jquery实现点击左右按钮图片横向滚动
Apr 11 Javascript
按钮接受回车事件的三种实现方法
Jun 06 Javascript
探寻Javascript执行效率问题
Nov 12 Javascript
JavaScript日期时间与时间戳的转换函数分享
Jan 31 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
Jul 31 Javascript
初步了解javascript面向对象
Nov 09 Javascript
浏览器兼容性问题大汇总
Dec 17 Javascript
用js写的一个路由(简单实例)
Sep 24 Javascript
vue数据传递--我有特殊的实现技巧
Mar 20 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
Apr 17 Javascript
jQuery 查找元素操作实例小结
Oct 02 jQuery
基于JS实现数字+字母+中文的混合排序方法
Jun 06 #Javascript
jquery树形菜单效果的简单实例
Jun 06 #Javascript
逻辑表达式中与或非的用法详解
Jun 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
You might like
一周学会PHP(视频)Http下载
2006/12/12 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
Javascript - HTML的request类
2007/01/09 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
JS获取单击按钮单元格所在行的信息
2014/06/17 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
2016/12/20 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
canvas实现图片根据滑块放大缩小效果
2017/02/24 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
python中定义结构体的方法
2013/03/04 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
如何基于python实现不邻接植花
2020/05/01 Python
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
高中生的自我鉴定范文
2014/01/24 职场文书
2014年财政局工作总结
2014/12/09 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL