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


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新的事件绑定机制on()的使用技巧
Apr 26 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
Aug 21 Javascript
使用CoffeeScrip优美方式编写javascript代码
Oct 28 Javascript
web打印小结
Jan 11 Javascript
深入理解Javascript中的观察者模式
Feb 20 Javascript
BootStrap注意事项小结(五)表单
Mar 10 Javascript
JavaScript原生实现观察者模式的示例
Dec 15 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
May 06 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
Mar 28 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
May 21 Javascript
javascript实现视频弹幕效果(两个版本)
Nov 28 Javascript
vue使用better-scroll实现滑动以及左右联动
Jun 30 Javascript
基于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去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
php事件驱动化设计详解
2016/11/10 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
javascript URL编码和解码使用说明
2010/04/12 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
2014/07/23 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
使用axios实现上传图片进度条功能
2017/12/21 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
Python实现微信机器人的方法
2019/09/06 Python
python二维图制作的实例代码
2020/12/03 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
建筑专业毕业生推荐信
2013/11/21 职场文书
市场部管理制度
2014/02/02 职场文书
网络管理专业求职信
2014/03/15 职场文书
党员创先争优承诺书
2014/03/26 职场文书
殡葬服务心得体会
2014/09/11 职场文书
同意迁入证明模板
2014/10/26 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
法定授权委托证明书
2015/06/18 职场文书
初中同学会致辞
2015/08/01 职场文书