逻辑表达式中与或非的用法详解


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 相关文章推荐
PJBlog插件 防刷新的在线播放器
Oct 25 Javascript
javascript SocialHistory 检查访问者是否访问过某站点
Aug 02 Javascript
js获取提交的字符串的字节数
Feb 09 Javascript
对js关键字命名的疑问介绍
Apr 25 Javascript
js实现ArrayList功能附实例代码
Oct 29 Javascript
jQuery中first()方法用法实例
Jan 06 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
Aug 28 Javascript
JavaScript在网页中画圆的函数arc使用方法
Nov 13 Javascript
JavaScrip常见的一些算法总结
Dec 28 Javascript
微信小程序 开发之顶部导航栏实例代码
Feb 23 Javascript
JavaScript实现连连看连线算法
Jan 05 Javascript
图解javascript作用域链
May 27 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
gulp-htmlmin压缩html的gulp插件实例代码
Jun 06 #Javascript
node.js cookie-parser 中间件介绍
Jun 06 #Javascript
JavaScript 对象字面量讲解
Jun 06 #Javascript
You might like
php的控制语句
2006/10/09 PHP
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
通达OA公共代码 php常用检测函数
2011/12/14 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
海量经典的jQuery插件集合
2010/01/12 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
js实现下拉菜单效果
2017/03/01 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
图文讲解vue的v-if使用方法
2019/02/11 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
一分钟学会JavaScript中的try-catch
2020/12/14 Javascript
Python函数学习笔记
2008/10/07 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
大学生毕业的自我评价分享
2014/01/02 职场文书
征兵宣传标语
2014/06/20 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
整改报告怎么写
2014/11/06 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
宾馆安全管理制度
2015/08/06 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python