【分享】这篇教程助力你成为 JavaScript 糕手!(四)
第四章:运算符与表达式

4.1 算术运算符

加法运算符(+):用于数字相加,如console.log(5 + 3);结果为8。
当用于字符串时,它表示字符串拼接。例如console.log(‘Hello’+ ‘world’);输出Hello world。如果一个操作数是字符串,另一个操作数是其他类型(如数字),JavaScript 会将另一个操作数转换为字符串后再拼接。
减法运算符(-):用于数字相减,如console.log(7 - 2);结果为5。
乘法运算符()*:用于数字相乘,如console.log(4 * 6);结果为24。
除法运算符(/):用于数字相除,如console.log(8 / 2);结果为4。当除数为0时,在 JavaScript 中会得到Infinity(被除数为正数时)或-Infinity(被除数为负数时),而0 / 0会得到NaN。
取模运算符(%):返回除法运算的余数。例如console.log(7 % 3);结果为1。常用于判断数字的奇偶性(对2取模,余数为0是偶数,余数为1是奇数)等场景。
自增运算符(++)和自减运算符(–): 自增运算符有前置(++i)和后置(i++)两种形式。前置自增是先将变量的值加1,然后再使用变量的值;后置自增是先使用变量的值,然后再将变量的值加1。
var i = 5;
console.log(++i); // 输出6,i的值变为6
var j = 5;
console.log(j++); // 输出5,j的值变为6
自减运算符同理,前置自减(–i)先减1再使用,后置自减(i–)先使用再减1。
4.2 比较运算符
相等运算符(==):比较两个值是否相等,在比较时会进行类型转换。例如console.log(5 == ‘5’);结果为true,因为 JavaScript 会将字符串’5’转换为数字5后再比较。
严格相等运算符(===):比较两个值是否相等且类型也相同。例如console.log(5 === ‘5’);结果为false,因为它们类型不同;而console.log(5 === 5);结果为true。
不等运算符(!=):与相等运算符==相反,比较两个值是否不相等,会进行类型转换。例如console.log(5!= ‘5’);结果为false。
严格不等运算符(!==):与严格相等运算符=相反,比较两个值是否不相等且类型也不同。例如console.log(5! ‘5’);结果为true。
大于(>)和小于(<)运算符:用于比较两个数字的大小。例如console.log(8 > 3);结果为true,console.log(2 < 1);结果为false。如果比较的操作数不是数字类型,JavaScript 会尝试将其转换为数字后再比较,但这种转换可能会导致意外结果,比如console.log(‘8’ > ‘3’);结果为true(因为字符串会按字符编码值比较)。
大于等于(>=)和小于等于(<=)运算符:功能类似大于和小于运算符,只是包含等于的情况。例如console.log(5 >= 5);结果为true。
4.3 逻辑运算符
逻辑与运算符(&&):
当使用&&连接两个表达式时,只有当两个表达式的值都为true时,整个逻辑表达式的值才为true;如果第一个表达式的值为false,则不会计算第二个表达式(短路求值)。例如:
var a = 5;
var b = 10;
console.log((a > 3) && (b > 5)); // 结果为true
console.log((a > 10) && (b > 5)); // 结果为false,因为a > 10为false,不会计算b > 5
逻辑或运算符(||):
当使用||连接两个表达式时,只要其中一个表达式的值为true,整个逻辑表达式的值就为true;如果第一个表达式的值为true,则不会计算第二个表达式(短路求值)。例如:
var c = 3;
var d = 7;
console.log((c > 5) || (d > 5)); // 结果为true,因为d > 5为true,不会计算c > 5是否为true
console.log((c > 5) || (d < 5)); // 结果为false,因为c > 5和d < 5都为false
逻辑非运算符(!):对一个表达式的值取反。如果表达式的值为true,则!运算后的值
为false;如果表达式的值为false,则!运算后的值为true。例如console.log(!(5 > 3));结果为false。
4.4 赋值运算符
基本赋值运算符(=):将右边的值赋给左边的变量。例如var x = 5;。
加法赋值运算符(+=):a += b等价于a = a + b。例如var num1 = 5; num1 += 3;此时num1的值为8。
减法赋值运算符(-=):a -= b等价于a = a - b。
乘法赋值运算符(=)*:a *= b等价于a = a * b。
除法赋值运算符(/=):a /= b等价于a = a / b。
取模赋值运算符(%=):a %= b等价于a = a % b。
4.5 其他运算符
三元运算符(? :):语法为条件表达式? 表达式1 : 表达式2。如果条件表达式的值为true,则执行表达式1;如果条件表达式的值为false,则执行表达式2。例如var max = (5 > 3)? 5 : 3;,max的值为5。
相关文章:
【分享】这篇教程助力你成为 JavaScript 糕手!(四)
第四章:运算符与表达式 4.1 算术运算符 加法运算符():用于数字相加,如console.log(5 3);结果为8。 当用于字符串时,它表示字符串拼接。例如console.log(‘Hello’ ‘world’);输出Hello world。如果一个操…...
双亲委派模型的破坏
双亲委派模型的第一次“被破坏”其实发生在双亲委派模型出现之前--即JDK1.2发布之前。由于双亲委派模型是在JDK1.2之后才被引入的,而类加载器和抽象类java.lang.ClassLoader则是JDK1.0时候就已经存在,面对已经存在 的用户自定义类加载器的实现代码,Java设计者引入双亲委派模…...
Android关机流程知多少?
在 Android 中,关机流程涉及系统各个组件的协同工作,确保设备在断电之前能够安全地关闭所有活动并保存数据。以下是 Android 系统中关机流程的详细介绍: 1. 用户触发关机请求 关机流程由用户的操作触发,通常有以下几种方式&#…...
深入理解指针end(总结篇)
如果有不会的智识点,请移动到博主前四篇指针博客! 可以当一个指针智商检阅博客看。 看看你是否掌握了这些知识 1:内存,指针变量 内存单元的编号地址指针; 指针变量和其他变量没有区别,指针变量是来存放…...
C# 程序暂停的两种方式
C# 程序暂停的两种方式:EventWaitHandle 与 volatile bool pause 在C#中,线程控制是多线程编程的重要组成部分,其中实现暂停的需求经常出现。本文将详细探讨使用EventWaitHandle和设置volatilebool来实现线程暂停的不同方式,它们…...
【LeetCode】【算法】160.相交链表
Leetcode 160. 相交链表 题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 思路 AB,一个指针,访问完A访问B;另一个指针&#…...
光伏破局 引领能源革命
为进一步推进商业信用体系建设,促进企业诚实守信经营,面向企业普及诚信与品牌建设的意义,指导企业加强诚信品牌建设,提升其整体竞争力,“崛起的民族品牌”专题系列节目以诚信为内涵,在全国范围内遴选出有行…...
Jenkins声明式Pipeline流水线语法示例
系列文章目录 docker搭建Jenkins2.346.3版本及常用工具集成配置(ldap、maven、ansible、npm等) docker安装低版本的jenkins-2.346.3,在线安装对应版本插件失败的解决方法 文章目录 系列文章目录jenkins流水线基础1、pipeline1.1、什么是pipeline?1.2、为什么使用pi…...
互联网技术净土?原生鸿蒙开启全新技术征程
鸿蒙生态与开发者的崭新机会 HarmonyOS NEXT承载着华为对未来操作系统的深刻理解,如今已发展为坚实的数字底座。它不仅在技术层面取得了全面突破,还在中国操作系统市场中站稳了脚跟。 当前,HarmonyOS NEXT的代码行数已超过1.1亿,…...
关于Django 模型字段 `choices`自定义数据类型的枚举——补充
文章目录 1. 处理 datetime 类型的 choices2. 处理 time 类型的 choices3. 处理 Decimal 类型的 choices4. 处理 UUID 类型的 choices5. 处理 float 类型的 choices 在 Choices 类的基础上扩展,可以将 choices 与特定数据类型(如 date 或 datetime&a…...
CAP理论的延申--BASE理论
上一篇文章我简单介绍了一下什么是CAP理论,本篇文章讲解一下随着技术的演变,CAP理论是如何发展为BASE理论的。 CAP理论回顾 首先我们回顾一下CAP理论,CAP理论指得是分布式系统发生网络等故障时,不同节点之间无法同步数据…...
【傻呱呱】phpMyAdmin怎样给特定用户授权特定数据库权限?
前期准备 phpMyAdmin数据库(MySQL) END...
『VUE』21. 组件注册(详细图文注释)
目录 组件注册局部注册全局注册全局注册示例总结 欢迎关注 『VUE』 专栏,持续更新中 欢迎关注 『VUE』 专栏,持续更新中 组件注册 组件注册有两种方式:全局注册和局部注册。全局注册只需要注册依次,其他组件可以直接调用无需再次像局部注册一…...
如何产看SQL 查询的执行时间
要查看 SQL 查询的执行时间,尤其是毫秒级别,可以使用以下几种方法: 方法 1:使用 SET STATISTICS TIME 查看执行时间 SET STATISTICS TIME 会显示执行时间的详细信息,包括 CPU 时间和总耗时。启用后,SQL S…...
计算机网络——路由器构成
算路由表是分布式去算——你算你的,我算我的 输出队列非先来先传 调度发生在哪里 缓存队列一般是应对——来数据方向的速度过快问题...
架构师之路-学渣到学霸历程-48
实现域名跳转的实验 今天继续还是分享域名跳转的实验;继续整,看看效果 意思就是你本来访问www.liangjiawei.net的网站然后跳转到blog.liangjiawei.net的网站 1、基础的环境部署 安装好nginx(这里最好的就是干净的环境)创建两个…...
HappyChart——一款简单好用的专业绘图软件
HappyChart是一款新出的专业绘图软件,灵感来自于类PS软件,它是以图层的方式进行绘图。相比与Excel图表或其他专业绘图软件,HappyChart界面简洁明了,操作简单,没有复杂的选项,它只调整绘图相关参数即可实时展…...
【Linux】进程信号全攻略(二)
🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 再谈信号的捕捉 🦋 关于信号捕捉的细节部分(sigaction函数) 二:🔥 穿插话题 - 操作系统是怎么运…...
redis用法(二)
文章目录 02-redis数据类型篇生产环境下的redis实况图 1.全局命令redis数据存储格式set设置k-v查看当前redis的key的数量危险命令,新手请在于超老师陪同下执行为什么危险?如何正确搜索redis的key 查看库下有多少个key查询redis库信息切换redis库查看key是…...
Python-利用os,tkinter库编写一个伪恶意程序文件(Pro版)
前言:上一期我们简单学习了如何编写一个多次弹窗警告用户的exe伪恶意文件。我们知道了把Python初始文件编译为exe文件后,程序在没有Python环境的情况下也能正常运行。我们上次编写的程序仅仅只是伪造系统正在执行关机命令前的倒计时的假象,实…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
数据库——redis
一、Redis 介绍 1. 概述 Redis(Remote Dictionary Server)是一个开源的、高性能的内存键值数据库系统,具有以下核心特点: 内存存储架构:数据主要存储在内存中,提供微秒级的读写响应 多数据结构支持&…...
React核心概念:State是什么?如何用useState管理组件自己的数据?
系列回顾: 在上一篇《React入门第一步》中,我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目,并修改了App.jsx组件,让页面显示出我们想要的文字。但是,那个页面是“死”的,它只是静态…...
未授权访问事件频发,我们应当如何应对?
在当下,数据已成为企业和组织的核心资产,是推动业务发展、决策制定以及创新的关键驱动力。然而,未授权访问这一隐匿的安全威胁,正如同高悬的达摩克利斯之剑,时刻威胁着数据的安全,一旦触发,便可…...
C++ Saucer 编写Windows桌面应用
文章目录 一、背景二、Saucer 简介核心特性典型应用场景 三、生成自己的项目四、以Win32项目方式构建Win32项目禁用最大化按钮 五、总结 一、背景 使用Saucer框架,开发Windows桌面应用,把一个html页面作为GUI设计放到Saucer里,隐藏掉运行时弹…...
