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


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 Tab选项卡效果代码改进版
Apr 01 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
Oct 16 Javascript
javascript文本框内输入文字倒计数的方法
Feb 24 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
May 09 Javascript
JS正则表达式验证密码格式的集中情况总结
Feb 23 Javascript
详谈commonjs模块与es6模块的区别
Oct 18 Javascript
vscode 开发Vue项目的方法步骤
Nov 25 Javascript
js实现页面多个日期时间倒计时效果
Jun 20 Javascript
JS立即执行的匿名函数用法分析
Nov 04 Javascript
Vue中常用rules校验规则(实例代码)
Nov 14 Javascript
JavaScript实现点击自制菜单效果
Feb 02 Javascript
浅谈JS的二进制家族
May 09 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 self,$this,const,static,-&amp;gt;的使用
2009/10/22 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
javascript 数组的方法集合
2008/06/05 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
使用JS动态显示文本
2017/09/09 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
Python中防止sql注入的方法详解
2017/02/25 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
python write无法写入文件的解决方法
2019/01/23 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
英国领先的电子、技术和办公用品购物网站:Ebuyer
2018/04/04 全球购物
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
工商学院毕业生自荐信
2013/11/12 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
不错的求职信范文
2014/07/20 职场文书
暂停营业通知
2015/04/25 职场文书
高一语文教学反思
2016/02/16 职场文书
初中思品教学反思
2016/02/20 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
MySQL 全文索引使用指南
2021/05/25 MySQL
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL