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


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中的异常处理try...catch使用介绍
Sep 21 Javascript
js中for in语句的用法讲解
Apr 24 Javascript
JS 清除字符串数组中,重复元素的实现方法
May 24 Javascript
浅谈JavaScript对象的创建方式
Jun 13 Javascript
Vue.js中数据绑定的语法教程
Jun 02 Javascript
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
Sep 08 Javascript
实现jquery放大镜的两种方法
Feb 22 jQuery
产制造追溯系统之通过微信小程序实现移动端报表平台
Jun 03 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
Jun 27 Javascript
vue简单练习 桌面时钟的实现代码实例
Sep 19 Javascript
Echarts实现单条折线可拖拽效果
Dec 19 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
Oct 31 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
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
php实现加减法验证码代码
2014/02/14 PHP
php二分查找二种实现示例
2014/03/12 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
Bootstrap每天必学之js插件
2015/11/30 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
微信小程序模版渲染详解
2018/01/26 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
使用Python3 编写简单信用卡管理程序
2016/12/21 Python
python安装oracle扩展及数据库连接方法
2017/02/21 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
Python循环实现n的全排列功能
2019/09/16 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
python3.8下载及安装步骤详解
2020/01/15 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
北大自主招生自荐信
2015/03/04 职场文书
教师党员自我评价范文
2015/03/04 职场文书
学校会议通知范文
2015/04/15 职场文书
污水处理保证书
2015/05/09 职场文书
暑期工社会实践报告
2015/07/13 职场文书
Redis命令处理过程源码解析
2022/02/12 Redis