深入理解逻辑表达式的用法 与或非的用法_基础知识

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

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

以上这篇深入理解逻辑表达式的用法 与或非的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索逻辑
, 表达式
或非
深入理解正则表达式、深入浅出正则表达式、深入浅出之正则表达式、深入正则表达式、逻辑表达式,以便于您获取更多的相关知识。

时间: 2024-10-30 02:16:42

深入理解逻辑表达式的用法 与或非的用法_基础知识的相关文章

深入理解Java线程编程中的阻塞队列容器_基础知识

1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列.这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空.当队列满时,存储元素的线程会等待队列可用.阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程.阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素. 阻塞队列提供了四种处理方法: 抛出异常:是指当阻塞队列满时候,再往队列里插入元素,会抛出IllegalStateException("Q

深入理解JavaScript高级之词法作用域和作用域链_基础知识

主要内容:1.分析JavaScript的词法作用域的含义 2.解析变量的作用域链 3.变量名提升时什么 最近在传智播客讲解JavaScript的课程,有不少朋友觉得JavaScript是如此的简单,但是又如此的不知如何使用,因此我准备了一些内容给大家分享一下. 这个系列主要讲解JavaScript的高级部分的内容,包括作用域链.闭包.函数调用模式.原型以及面向对象的一些东西. 在这里不包含JavaScript的基本语法,如果需要了解基础的同学可以到http://net.itcast.cn里面去下

深入理解js中this的用法_基础知识

this是js的一个关键字,随着函数使用场合不同,this的值会发生变化.但是总有一个原则,那就是this指的是调用函数的那个对象. 1.纯粹函数调用. function test() { this.x = 1; alert(x); } test(); 其实这里的this就是全局变量.看下面的例子就能很好的理解其实this就是全局对象Global.其实这里的this就是全局变量.看下面的例子就能很好的理解其实this就是全局对象Global. var x = 1; function test()

深入理解ECMAScript的几个关键语句_基础知识

写在前面 在这一章中我们聊一聊ECMAScript中的几个关键语句switch.for-in.label等语句,加深我们对它们的理解和认识.首先从最常见的说起. while和for while和for是很常规的语句,无论是在JavaScript还是C还是其他编程语言中.而且在编程中我们较常用的也是for,for用起来更灵活,更简单,所以有些人可能就会产生这样一种误解: for比while更强大,能做到while做不到的一些事情. 其实我们稍微想想while和for语句的语法应用,我们就会发现:

深入理解JavaScript 函数_基础知识

方法&函数 区别 1.function 是更通用的概念,如数学.编程 2.method 是面向对象中的概念,一般与类或对象成对出现 关系 1.对象的属性可以是任意类型 2.对象的属性如果是函数类型,它就叫做这个对象的方法 3.所以方法的本质还是函数 函数的调用 1.fun() 2.obj.fun() 3.fun.call() 函数的属性和方法 1.name 2.length 3.toString 作用域 变量不是哪里都可以使用 全局变量(跨文件) var n = 1; function fn()

深入理解JS函数的参数(arguments)的使用_基础知识

JS函数的参数在function内可以用arguments对象来获取. 参数的调用有两种方式: 1.期望参数的使用. 2.实际传递参数的使用. 应用举例: function Test(a, b){ var i, s = "Test函数有"; var numargs = arguments.length; // 获取实际被传递参数的数值. var expargs = Test.length; // 获取期望参数的数值,函数定义时的预期参数个数(有a和b 2个参数). s += (expa

详解JavaScript中循环控制语句的用法_基础知识

 JavaScript提供完全控制来处理循环和switch语句.可能有一种情况,当你需要退出一个循环,但未达到其底部.也可能有一种情况,当要跳过的码块的一部分,并直接开始下一个迭代. 为了处理这些情况下,JavaScript提供了break和continue语句.这些语句是用来马上退出任何循环或启动循环的下一次迭代.break 语句: break语句,这是简单地用switch语句介绍,用于提前退出循环,打破封闭的花括号. 例子: 这个例子说明了如何使用break语句同while循环.请注意循环打

JavaScript中switch语句的用法详解_基础知识

 可以使用多个if... else if语句,如前面的章节,执行多路分支.然而,这并不总是最佳的解决方案,尤其是当所有分支的依赖单一的变量的值. 使用JavaScript1.2开始,你可以用它处理的正是这种情况,使用一个switch语句,它这样做更有效,如果不是反复地使用if... else if语句.语法 switch语句的基本语法给出一个expression ,以评估计算几种不同的语句基于该表达式的值来执行.解释器检查对表达式的值的每一种情况,直到找到一个匹配.如果没有匹配,则缺省(defa

html文档中的location对象属性理解及常见的用法_基础知识

关于location对象的简单理解: 1.location对象中涵盖了当前页面(本页面)或者更直接的说,是当前加载的这个html文档的url信息 2.location对象作为window对象的一个属性,可以通过window.location老访问 下面顺便介绍一些URL(资源定位符)的相关信息吧: 在浏览器中URL通常由下面几个部分组成的: [协议][host][path][query] 协议:常见的协议有: http:// 表示资源文件在web服务器上 ftp://表示资源文件在网络上的ftp