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


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刷新框架子页面的七种方法代码
Nov 20 Javascript
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
Apr 24 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
Jul 08 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
Feb 27 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
Jan 09 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 Javascript
JavaScript仿商城实现图片广告轮播实例代码
Feb 06 Javascript
JSON键值对序列化和反序列化解析
Jan 24 Javascript
基于Vue2.0的分页组件
Mar 16 Javascript
vue中计算属性(computed)、methods和watched之间的区别
Jul 27 Javascript
vue中使用ueditor富文本编辑器
Feb 08 Javascript
关于vue-router-link选择样式设置
Apr 30 Vue.js
基于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
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
2014/10/31 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
jquery实现图片预加载
2015/12/25 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
jQuery第一次运行页面默认触发点击事件的实例
2018/01/10 jQuery
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
对python 通过ssh访问数据库的实例详解
2019/02/19 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
Python网页解析器使用实例详解
2020/05/30 Python
详解用selenium来下载小姐姐图片并保存
2021/01/26 Python
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
制药工程专业个人求职自荐信
2014/01/25 职场文书
合作意向书格式及范文
2014/03/31 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书