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


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 相关文章推荐
在JavaScript中遭遇级联表达式陷阱
Mar 08 Javascript
在JavaScript中实现类的方式探讨
Aug 28 Javascript
回车直接实现点击某按钮的效果即触发单击事件
Feb 27 Javascript
javascript学习笔记(五)原型和原型链详解
Oct 08 Javascript
javascript判断图片是否加载完成的方法推荐
May 13 Javascript
JavaScript“尽快失败”的原则实例详解
Oct 08 Javascript
JS批量替换内容中关键词为超链接
Feb 20 Javascript
基于jQuery封装的分页组件
Jun 26 jQuery
js 原生判断内容区域是否滚动到底部的实例代码
Nov 15 Javascript
Vue表单之v-model绑定下拉列表功能
May 14 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 Javascript
微信小程序自定义模态弹窗组件详解
Dec 24 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实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
如何离线执行php任务
2017/02/21 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
jquery 注意事项与常用语法小结
2010/06/07 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
JavaScript定义变量和变量优先级问题探讨
2014/10/11 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
Python的Django框架安装全攻略
2015/07/15 Python
python读取与写入csv格式文件的示例代码
2017/12/16 Python
Farah官方网站:男士服装及配件
2019/11/01 全球购物
成品仓管员工作职责
2013/12/29 职场文书
银行学习十八大感想
2014/01/11 职场文书
岳父生日宴会答谢词
2014/01/13 职场文书
领班岗位职责范文
2014/02/06 职场文书
《值日生》教学反思
2014/02/17 职场文书
法人委托书范本
2014/09/15 职场文书
单位委托书格式范本
2014/09/29 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电
MySQL 全文检索的使用示例
2021/06/07 MySQL
使用Redis实现实时排行榜功能
2021/07/02 Redis
python对文档中元素删除,替换操作
2022/04/02 Python