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


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 相关文章推荐
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
Mar 04 Javascript
js实现window.open不被拦截的解决方法汇总
Oct 30 Javascript
浅析AngularJS Filter用法
Dec 28 Javascript
如何提高javascript加载速度
Dec 26 Javascript
从零学习node.js之简易的网络爬虫(四)
Feb 22 Javascript
javascript实现延时显示提示框效果
Jun 01 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
Jun 03 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
Apr 09 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 Javascript
详解vue-flickity的fullScreen功能实现
Apr 07 Javascript
es6数组includes()用法实例分析
Apr 18 Javascript
Vue 实现可视化拖拽页面编辑器
Feb 01 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
第七节--类的静态成员
2006/11/16 PHP
PHP 开发工具
2006/12/06 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
php二分查找二种实现示例
2014/03/12 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
XML的代替者----JSON
2007/07/21 Javascript
jQuery textarea的长度进行验证
2009/05/06 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
Python中super函数的用法
2017/11/17 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
教师党员公开承诺事项
2014/05/28 职场文书
计算机毕业生求职信
2014/06/10 职场文书
爱护草坪标语
2014/06/24 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server