逻辑表达式的用法 与或非的用法

先说逻辑与(&&),它可以从三个层次进行理解

第一个层次最简单,就是简单的布尔值之间的逻辑与,就是左值和右值都是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的值  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,那么他就是一个有效值。

时间: 2024-08-22 19:11:36

逻辑表达式的用法 与或非的用法的相关文章

【Ext.Net学习笔记】04:Ext.Net中使用数据、Ext.Net Store的用法、Ext.Net ComboBox用法

之前的几篇文章都是介绍Ext.Net较为基础的东西,今天的这一篇将介绍数据的一些用法,包括XTemplate绑定数据.Store(Modal.Proxy).ComboBox的用法等. XTemplate绑定数据 XTemplate是个模板,当我们为一个XTemplate绑定数据之后,将会按照模板的预定格式进行显示. <ext:Window runat="server" ID="win1" Title="XTemplates用法" Width

7.1 安装软件包的三种方法7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法7.5 yum搭建本地仓库

- 7.1 安装软件包的三种方法 - 7.2 rpm包介绍 - 7.3 rpm工具用法 - 7.4 yum工具用法 - 7.5 yum搭建本地仓库 - 扩展 1. yum保留已经安装过的包 http://www.360doc.com/content/11/0218/15/4171006_94080041.shtml 2. 搭建局域网yum源 http://ask.apelearn.com/question/7627 # 7.1 安装软件包的三种方法 - windows的.exe文件实际上是一种二

absolut绝对定位的非绝对定位用法

一.absolute绝对定位的流行用法 一般而言,我们会用absolute绝对定位做什么呢?就是绝对定位,顾名思意,定死在某个位置上.例如,lightbox效果就是使用的绝对定位,例如新浪微博的弹出提示信息,我要转发李冰冰姐姐的微博,结果就会弹出: 还有就是与父relative相对定位标签结合使用,实现相对于父标签的绝对定位效果,例如人人网的搜索下拉菜单效果: 这里用法少不了的是left(right)绝对定位值或是top(bottom)值,否则绝对定位的位置会跟设置了left为0,top为0值一

PHP静态方法与非静态方法用法及区别

1.用static关键字来修饰类的属性.方法,称这些属性.方法为静态属性.静态方法:static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类属性"或"类方法".静态类不是不可以实例化,而是不需要实例化就可以用. 2.设计静态方法的目的是为了不用实例化对象直接用类名快速调用. 3.static 的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法.因为静态属性和方法被创建时,可能还没有任何

absolute绝对定位的非绝对定位用法

总结: position为absolute的元素如果没有设置left, top等值与left:0;top:0;的的效果是不一样的.例如一个div中有个absolute属性元素,其没有left或是top值,其会像个普通的inline-block属性元素一样静静地呆在这个div 里面,但是一旦设置了left:0;top:0;对不起,这个absolute元素立马变身,直接从DOM tree里面脱离,独立于文档流,结果相对于最近的relative属性的祖先标签定位(如果没有,就body定位).

7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法

7.1 安装软件包的三种方法 安装软件包的三种方法 7.2 rpm包介绍 rpm包介绍 安装目录 7.3 rpm工具用法 rpm工具用法 安装rpm包 升级rpm包 卸载rpm包 查询rpm包 查询包是否安装 查询指定包信息 7.4 yum工具用法 yum工具用法 第一列:yum  安装包名称 第二列:版本号 第三列:base 仓库名称 查看yum本地仓库内容: 把包放入容器里: 搜索rpm包 yum-组 通过yum-组安装 yum groupinstall -y yum 删除 7.5 yum搭

java8 :: 用法 (JDK8 双冒号用法)

特性 jdk8中使用了::的用法.就是把方法当做参数传到stream内部,使stream的每个元素都传入到该方法里面执行一下,双冒号运算就是Java中的[方法引用],[方法引用]的格式是: 类名::方法名 注意此处没有(). 案例: 表达式: person -> person.getAge(); 使用双冒号: Person::getAge 表达式: new HashMap<>() 使用双冒号: HsahMap :: new 部分代码案例 未使用双冒号 public class MyTes

::WritePrivateProfileString()的用法,以及GetPrivateProfileString的用法注意事项

WritePrivateProfileString(_T("Section1"),_T("Field1"),Field,savePath); 函数说明,这是在写*.ini文件时使用的函数,在写ini文件的时候,可以调用这个函数,而不用使用挺费劲的关于txt文件的读写. 第一个参数为当前ini文件中节的名字. 第二个参数是ini文件中的字段名:Field1=*** 第三个参数是要写入的字符串,假设Field=1234,写出来的效果应该是:Field1=1234 第四个

【Ext.Net学习笔记】03:Ext.Net DirectEvents用法详解、DirectMethods用法详解

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流