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


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得到网页中所有的div的id
Oct 19 Javascript
angular.element方法汇总
Jan 07 Javascript
jQuery带进度条全屏图片轮播特效代码分享
Jun 28 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
Sep 27 Javascript
JQuery解析XML数据的几个简单实例
May 18 Javascript
jQuery双向列表选择器DIV模拟版
Nov 01 Javascript
超全面的vue.js使用总结
Feb 12 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
Sep 12 Javascript
详解服务端预渲染之Nuxt(介绍篇)
Apr 07 Javascript
JavaScript修改注册表实例代码
Jan 05 Javascript
借助云开发实现小程序短信验证码的发送
Jan 06 Javascript
通过实例解析vuejs如何实现调试代码
Jul 16 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可变长参数处理函数详解
2017/02/22 PHP
Laravel 模型关联基础教程详解
2019/09/17 PHP
javascript实现的listview效果
2007/04/28 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
Python 备份程序代码实现
2017/03/06 Python
python万年历实现代码 含运行结果
2017/05/20 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Python对象属性自动更新操作示例
2018/06/15 Python
Python实现处理逆波兰表达式示例
2018/07/30 Python
python导入pandas具体步骤方法
2019/06/23 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
幼儿园大班毕业感言
2014/02/06 职场文书
工作分析计划书
2014/04/30 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
离职证明标准格式
2014/09/15 职场文书
2016年度员工工作表现评语
2015/12/02 职场文书
Python中的 No Module named ***问题及解决
2022/07/23 Python