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


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 相关文章推荐
javascript 在网页中的运用(asp.net)
Nov 23 Javascript
jquery放大镜效果超漂亮噢
Nov 15 Javascript
深入理解javascript作用域和闭包
Sep 23 Javascript
详解Bootstrap插件
Apr 25 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
Jun 20 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
Sep 28 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
Oct 07 Javascript
canvas实现手机端用来上传用户头像的代码
Oct 20 Javascript
禁用backspace网页回退功能的实现代码
Nov 15 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
Aug 23 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
Sep 13 Javascript
vuex 实现getter值赋值给vue组件里的data示例
Nov 05 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
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
JS 图片缩放效果代码
2010/06/09 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
Javascript变量作用域详解
2013/12/06 Javascript
JQUERY dialog的用法详细解析
2013/12/19 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
2017/09/20 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
Python字符串格式化的方法(两种)
2017/09/19 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
python pymysql库的常用操作
2020/10/16 Python
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
财产分割协议书范本
2014/11/03 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS