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


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 加上最后自己的验证
Nov 04 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
Oct 20 Javascript
javascript中的toFixed固定小数位数 简单实例分享
Jul 12 Javascript
初步使用Node连接Mysql数据库
Mar 03 Javascript
JavaScript中最常见的三个面试题解析
Mar 04 Javascript
ES6中Class类的静态方法实例小结
Oct 28 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
Aug 07 Javascript
浅谈react性能优化的方法
Sep 05 Javascript
Vue.js更改调试地址端口号的实例
Sep 19 Javascript
vue组件从开发到发布的实现步骤
Nov 11 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
Mar 13 Javascript
JavaScript中关于base64的一些事
May 06 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&amp;mysql(四)
2006/10/09 PHP
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
求PHP数组最大值,最小值的代码
2011/10/31 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
在javascript中执行任意html代码的方法示例解读
2013/12/25 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
78行Python代码实现现微信撤回消息功能
2018/07/26 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
在校生钳工实习自我鉴定
2013/09/19 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
上课说话检讨书500字
2014/11/01 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python
pandas中pd.groupby()的用法详解
2022/06/16 Python