代码编织梦想

所谓逻辑运算符就是与&&、或||、非! 三种,逻辑运算符又叫条件运算符,即运算的结果只有两种,真(true)或假(false)。在进行逻辑运算学习前,我们先复习一下非Boolean类型转换为Boolean的规则:

  • 使用Boolean()函数
    (1)数字 --> 布尔
    除了0和NaN,其余都是true
    (2)字符串 --> 布尔
    除了空字符串,其余都是true
    (3)null和undefined都会转换为false
    (4)对象(Object)也会转换为true

! 非

  • ! 可以用来对一个值进行非运算
  • 所谓的非运算就是对一个布尔值进行取反操作,true变false,false变true
  • 如果对一个值进行两次取反,则还是它本身
  • 如果对非布尔值进行运算,则会将其转换为布尔值,然后再取反,所以我们可以利用该特点,来将一个其他的数据类型转换为布尔值
  • 可以为一个任意数据类型取两次反,来将其转换为布尔值,原理和Boolean()函数一样。(转换类型在这里不继续做补充,大家要了解可以看一下我的前一篇博客JavaScript的强制类型转换(String Number Boolean)

&& 与

  • &&可以对符号两侧的值进行与运算并返回结果
  • 运算规则:
    (1)两个值中只要有一个值为false就返回false,只有两个值都为true时,才会返回true
    (2)JS中的“与”属于短路的与,如果第一个值为false,则不会再看第二个值。(当然不止在js中是这样,像C语言和java都是这个规则,只要第一个是false,则直接返回false,不再继续看你第二个是true还是false)
    例:
<script type="text/javascript">
	var a = false;
    var b = "123";
    var c = a && b;
    console.log(typeof c);
    console.log("c = " + c); 
</script>

运行结果:
在这里插入图片描述
(3)在进行与&&运算时
1.如果第一个值为true,则必然返回第二个值。如果两个值都为true,则返回后边的
例:

<script type="text/javascript">
	var a = 3;
    var b = 4;
    var c = a && b;
    console.log("c = " + c); 
</script>

运行结果:
在这里插入图片描述
2.如果两个值中有一个值false,则返回false的值,如果两个都是false,则返回靠前的false
例:

<script type="text/javascript">
	var a = 0;
    var b = 3;
    var c = a && b;
    console.log("c = " + c); 
</script>

运行结果:
在这里插入图片描述
例:

<script type="text/javascript">
	var a = 6;
    var b = 0;
    var c = a && b;
    console.log("c = " + c); 
</script>

运算结果:
在这里插入图片描述

|| 或

  • ||可以对符号两侧的值进行或运算并返回结果
  • 运算规则:
    (1)两个值中只要有一个true,就返回true,如果两个值都为false,才返回false
    (2)JS中的“或”属于短路的或,如果第一个值为true,则不会检查第二个值
    例:
<script type="text/javascript">
	var a = true;
    var b = false;
    var c = a || b;
    console.log(typeof c);
    console.log("c = " + c); 
</script>

运行结果:
在这里插入图片描述
(3)在进行或||运算时
1.如果第一个值为true,则直接返回第一个值
例:

<script type="text/javascript">
	var a = 6;
    var b = 0;
    var c = a || b;
    console.log("c = " + c); 
</script>

运行结果:
在这里插入图片描述

2.如果第一个值为false,则直接返回第二个值
例:

<script type="text/javascript">
	var a = 0;
    var b = 6;
    var c = a || b;
    console.log("c = " + c); 
</script>

运行结果:
在这里插入图片描述

总结:

总结来说,大家可以把与&&逻辑运算理解为如果一盒饼干,我吃了第一个会拉肚子,我肯定不会继续吃第二个。即只要第一个false,就不会看后面的值,直接返回false。只有全部都是好的,不会拉肚子的我才会吃完整盒,即只有都是true才会返回true。

|| 或运算大家也可以自己进行想象记忆,可以在与&&的基础上进行对比。

大家在进行逻辑运算学习的时候,一定一定要自己去敲一遍,多敲几遍,多试几个样例就记住运算规则了~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_46452134/article/details/111088221

springboot + shiro应用,[nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]-爱代码爱编程

1、报错:ERROR 14584 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request p

day18.用户交互Scanner-爱代码爱编程

用户交互Scanner 今天呢,我们进入基础学习的第二阶段,我们刚学会了语法,但我们还不懂操作,学完这一阶段,我们差不多就可以自己做一些像计算器的小程序了 流程控制 我们这一章要学习流程控制,那我们看看流程控制需要学哪些东西 第一步,我们要学习用户交互的Scanner对象,之前我们学的基本语法只是在IDEA里面输出一下让我们看到,而Scanne

什么是云服务器ECS?云服务器是干什么的?-爱代码爱编程

云服务器ECS(Elastic Compute Service)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型

mac安装jdk-爱代码爱编程

mac安装jdk 一,下载jdk 二,安装jdk 一路next就好 # 查安装地址 /usr/libexec/java_home -V 三,环境变量 # 进入~/目录下面 cd ~/ # 按需创建.bash_profile touch .bash_profile # 打开.bash_profile open -e .bash_profil

算法-Contains Duplicate-存在重复元素-爱代码爱编程

1、题目描述 给定一个整数数组,判断是否存在重复元素。 如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 示例 1: 输入: [1,2,3,1] 输出: true 2、问题分析 用字典模拟哈希整数范围太大了,直接使用HashSetboolean put(Object value)3、代码实

笔记整理之多线程-爱代码爱编程

把之前的关于多线程的笔记整理了一下,如果有写的不对的地方,麻烦帮忙指出下,谢谢了。 目录 1不使用线程池的情况下,在一个方法中为什么不能重复调用同一个线程? 2线程对象调用run方法和调用start方法的区别: 3什么是高内聚,低耦合 4线程的生命周期 5创建线程的几种方式: 6多线程安全问题: 7多线程中解决同步问题的方式: 8Lock

springboot + shiro应用,[nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]-爱代码爱编程

1、报错:ERROR 14584 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request p

Vue最佳实战系列(一):设计一个回味无穷的高扩展性路由,比意大利面香【详解+实践贴上代码】-爱代码爱编程

在接触Vue的过程中,总能令我惊喜,却也因不够老练而带来了让人耗时的bug;但都一一过五关,斩六将,胜在好用且好玩。 所以我想跟你一起拆Vue这堵墙,再把它重新搭建的更好! 这也是我准备写 最佳Vue开发实战系列 的理由。 还等什么? 一键三连码起! 一、什么是高扩展性路由? 与其问什么是高扩展性路由,其实更应该问的是为什么要高扩展性路由? 其

基于Vue的前端架构,我做了这15点-爱代码爱编程

关注公众号 前端开发博客,回复“加群” 加入我们一起学习,天天进步 作者:codexu 链接:https://juejin.cn/post/6901466994478940168 1.分解需求 技术栈 考虑到后续招人和现有人员的技术栈,选择 Vue 作为框架。公司主要业务是 GIS 和 BIM,通常开发一些中大型的系统,所以 v

@RequestMapping 与@GetMapping和@PostMapping的关系-爱代码爱编程

从浏览器只能发起GET请求,不能发起POST请求   用@RequestMapping注解可发起GET和POST请求 增: @RequestMapping(value = "/create",method = RequestMethod.POST) ,等于@PostMapping(value = "/create") 查: @RequestM

django模板使用-爱代码爱编程

day02 1.http请求和响应: 301-永久重定向:当在地址栏输入360buy.com发出请求后,在京东服务器发出响应后,在响应头LOCATION中包含新的URL地址jd.com.客户端浏览器收到响应向新的URL地址发出get请求,这样的话就能重定向URL地址了; 开发时候我们使用Firefox,F12打开调试窗口 get从服务器端获取数据,

重定向防止表单重复提交-爱代码爱编程

重定向防止表单重复提交 1、表单重复提交的情况:2、实例(1)针对第一种情况(提交完表单之后,刷新网页)(2)针对第二种情况(网络延迟)(3)回退按钮重复提交表单3、重复提交带来的问题 1、表单重复提交的情况: (1)提交完表单之后,刷新网页。 (2)第一次单击提交之后,在没有提交成功情况下,又单击提交按钮。 (3)用户提交表单后,点击浏