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


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 Ajax功能时需要注意的一个问题(内存溢出)
May 30 Javascript
Jquery刷新页面背景图片随机变换的实现方法
Mar 15 Javascript
浅谈javascript六种数据类型以及特殊注意点
Dec 20 Javascript
JS实现的5级联动Select下拉选择框实例
Aug 17 Javascript
Prototype框架详解
Nov 25 Javascript
悬浮广告方法日常收集整理
Mar 18 Javascript
js获取所有checkbox的值的简单实例
May 30 Javascript
AngularJs Dependency Injection(DI,依赖注入)
Sep 02 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
Dec 02 Javascript
vue 引入公共css文件的简单方法(推荐)
Jan 20 Javascript
layui 地区三级联动 form select 渲染的实例
Sep 27 Javascript
js轮播图之旋转木马效果
Oct 13 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作为Shell脚本语言使用
2006/10/09 PHP
基于php缓存的详解
2013/05/15 PHP
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
jQuery操作input type=radio的实现代码
2012/06/14 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
ant-design-vue 实现表格内部字段验证功能
2019/12/16 Javascript
JS实现简单打字测试
2020/06/24 Javascript
深入解析Python中的变量和赋值运算符
2015/10/12 Python
Python 常用string函数详解
2016/05/30 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
公司部门司机岗位职责
2014/01/03 职场文书
优秀求职信范文分享
2014/01/26 职场文书
代理人委托书
2014/08/01 职场文书
政协工作总结2015
2015/05/20 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python