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


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 相关文章推荐
js实现简单模态窗口,背景灰显
Nov 14 Javascript
jQuery Ajax使用 全解析
Dec 15 Javascript
struts2+jquery组合验证注册用户是否存在
Apr 30 Javascript
js获取浏览器基本信息大全
Nov 27 Javascript
JS控制FileUpload的上传文件类型实例代码
Oct 07 Javascript
JS定时器实现数值从0到10来回变化
Dec 09 Javascript
深入理解javascript中的 “this”
Jan 17 Javascript
Javascript实现的StopWatch功能示例
Jun 13 Javascript
package.json文件配置详解
Jun 15 Javascript
JS中的回调函数实例浅析
Mar 21 Javascript
Taro集成Redux快速上手的方法示例
Jun 21 Javascript
js之切换全屏和退出全屏实现代码实例
Sep 09 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
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
PHP 实现缩略图
2021/03/09 PHP
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
利用JS实现数字增长
2016/07/28 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
详解如何构建Angular项目目录结构
2017/07/13 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
详解 vue.js用法和特性
2017/10/15 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
Python中的多行注释文档编写风格汇总
2016/06/16 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
Python作用域与名字空间原理详解
2020/03/21 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
2015个人半年总结范文
2015/03/09 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
mysql的单列多值存储实例详解
2022/04/05 MySQL
Java 写一个简单的图书管理系统
2022/04/26 Java/Android