JavaScript基础——JavaScript运算符
赋值运算符
算术运算符
一元运算符
三元/三目运算符
比较运算符
逻辑运算符
运算符优先级
在JavaScript中,常见的运算符可以包括赋值运算符、一元运算符、算术运算符(二元运算符)、三元/三目运算符、比较运算符、逻辑运算符等(其他不常见的这里不说明)。
赋值运算符
赋值运算符用于给变量赋值,如=
、+=
、-=
、*=
、/=
、%=
、**=
、&=
、|=
、^=
、<<=
、>>=
、>>>=
。
常见的符号是“=”,表示赋值,假设现在有一个user变量,user="admin",表示将字符串"admin"赋值给user变量。如下:
+=、-=、*=、/=、%=都是用于变量自身与其他变量(常量)做数学运算,例如,a+=1,相当于a=a+1,也就是将a+1的结果赋值给a,其他符号同理。
a-=1 ,相当于a=a-1,也就是将a-1的结果赋值给a。
a/=2 ,相当于a=a/2,也就是将a/2的结果赋值给a。
a*=2 ,相当于a=a*2,也就是将a*2的结果赋值给a。
a%=3 ,相当于a=a%3,也就是将a%3的结果赋值给a。
完整代码如下:
<script>// 1)赋值运算符var user = "admin";console.log(user);//'admin'var a = 10;console.log(a);a += 1;console.log(a);var a = 10;console.log(a);a -= 1;console.log(a);var a = 10;console.log(a);a /= 2;console.log(a);var a = 10;console.log(a);a *= 2;console.log(a);var a = 10;console.log(a);a %= 3;console.log(a);</script>
算术运算符
算术运算符又称为二元运算符,也就是需要两个操作数,算术运算符用于执行基本的数学运算,如+
(加)、-
(减)、*
(乘)、/
(除)、%
(取余)、**
(幂运算符)、++(自增运算符)、--(自减运算符)
其中,+
(加)、-
(减)、*
(乘)、/
(除)、%
(取余)、**
(幂运算符)与数学计算完全相同,代码如下:
完整代码如下:
<script>// 2)算术运算符console.log(1 + 2);console.log(1 - 1);console.log(1 * 1);console.log(1 / 1);console.log(12 % 10);console.log(2 ** 2);</script>
一元运算符
自增自减运算符(++、--)包括前置自增自减(++n、--n)运算符和后置自增自减(n++、n--)运算符,两者在计算上有区别。
前置自增自减(++n、--n)运算符是先计算后输出,后置自增自减(n++、n--)运算符是先输出后计算。
假设定义一个变量a,值为10,定义一个变量b,值为20,分别利用前置自增和后置自增来观察两者的区别,可以发现前置自增计算的a输出后为11,后置自增计算的b输出的值为20,再次输出才为21。
代码如下:
<script>var a = 10;console.log(a);console.log(++a);console.log(a);var b = 20;console.log(b);console.log(b++);console.log(b);</script>
三元/三目运算符
三元运算符也叫做条件运算符,需要三个操作数,形式如条件是否成立?执行代码1:执行代码2,返回的是一个值。
条件是否成立?成立执行代码:不成立执行代码
var d = b > c ? b : c; 表示将获得的值赋给d,条件是b是否大于c,如果大于(成立),返回b的值,如果小于(不成立),返回c的值。
完整代码如下:
<script>// 条件判断的表达式// 三元运算// 条件是否成立?执行代码1:执行代码2var b = 10;var c = 20;var d = b > c ? b : c;console.log(d);// 定义变量记录小时var h = 6;var v = h < 10 ? '0' + h : h;console.log(v);1 > 2 ? console.log("条件成立") : console.log("条件不成立");false ? console.log("条件成立") : console.log("条件不成立");true ? console.log("条件成立") : console.log("条件不成立");</script>
比较运算符
比较运算符用于比较两个值,如==
、===
、!=
、!==
、>
、>=
、<
、<=
,两个数比较后输出的是布尔值(true/false)
其中,>
、>=
、<
、<=
运算符与数学中的运算符完全一致,比较后输出布尔值。
代码如下:
<script>// 3) 比较运算符console.log(1 > 2);console.log(1 < 2);console.log(1 >= 2);console.log(1 <= 2);</script>
“==”、“===”符号用于比较两个数是否相等,返回值也是布尔值,其中“==”仅比较两个数的值,如果数据类型不相等,只要值相等就是true,“===”比较两个数的值以及数据类型,只有数据类型和值都相同才为true。
完整代码:
<script>console.log(1 == '1');console.log(1 == 2);console.log(1 === '1');console.log(1 === 1);</script>
“!=”、“!==”符号与 “==”、“===”相反,用于比较两个数是否不相等,返回值也是布尔值,其中“!=”仅比较两个数的值,如果数据类型不相等,只要值不相等就是true,“!==”比较两个数的值以及数据类型,只有数据类型和值都不相等才为true。
完整代码:
<script>console.log(1 != '1');console.log(1 != 1);console.log(1 != 2);console.log(1 !== '1');console.log(1 !== 1);</script>
逻辑运算符
逻辑运算符用于逻辑运算,如&&
(逻辑与)、||
(逻辑或)、!
(逻辑非)。
符号 | 名称 | 日常读法 | 特点 | 口诀 |
&& | 逻辑与 | 并且 | 符号两边都为真(true),结果才为真(true) | 一假则假 |
|| | 逻辑或 | 或者 | 符号一个为真(true),结果就为真(true) | 一真则真 |
! | 逻辑非 | 取反 | 真(true)变假(false),假(false)变真(true) | 真变假,假变真 |
&&
(逻辑与)表示条件两个或者以上,只要有一个条件不成立(是假),结果就不成立(是假)
在&&
(逻辑与)中,如果有一个为真,另一个有值,就把值赋给这个变量。
完整代码如下:
<script>console.log(true && false);// falseconsole.log(true && false && true && true);// falseconsole.log(true && true && true && true);// trueconsole.log(1 < 2 && 3 < 4 && 4 < 5 && 5 < 6);// truevar k1 = true && false;console.log(k1);// falsevar k2 = false && true;console.log(k2);// falsevar k3 = true && true;console.log(k3);// truevar k4 = true && 100;// 前者有值为true, 选择把后者的值赋给变量console.log(k4);// 100</script>
||
(逻辑或)表示条件两个或者以上,只要有一个条件成立(真的),结果就成立(是真),只有条件都为不成立(假),才是不成立(假)。
在 ||
(逻辑或)中,如果有一个为空(空字符串、未定义等),另一个有值,就把值赋给这个变量。
完整代码如下:
<script>console.log(true || false);// trueconsole.log(true || false || false || false);// trueconsole.log(false || false || false || false);// falseconsole.log(1 < 2 || 2 > 3 || 3 > 4 || 4 > 5);// truevar v1 = true || false;console.log(v1);// truevar v2 = false || true;console.log(v2);// truevar v3 = "" || "hello world";// 前者没有值,就把后者的值赋给变量console.log(v3);// 'hello world'var v4 = undefined || 123;console.log(v4);// 123</script>
! (取反运算符)表示取相反的逻辑值,也就是说,如果是表达式是真,!(表达式)就是假,如果表达式是假,!(表达式)就是真。
完整代码如下:
<script>console.log(true);// trueconsole.log(!true);// falseconsole.log(!false);// true// (100 可以表示有值,有值表示true, 在true前面加叹号表示取相反的值)console.log(!100);// false </script>
运算符优先级
在含多个运算符时,按照优先级进行计算,优先级越小,越先计算。
优先级 | 运算符 | 顺序 |
1 | 小括号 | () |
2 | 一元运算符 | ++、--、! |
3 | 算术运算符 | 先*/ 后 +- |
4 | 关系运算符 | >、>=、<、<= |
5 | 相等运算符 | ==、===、!=、!== |
6 | 逻辑运算符 | 先&&后|| |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
相关文章:

JavaScript基础——JavaScript运算符
赋值运算符 算术运算符 一元运算符 三元/三目运算符 比较运算符 逻辑运算符 运算符优先级 在JavaScript中,常见的运算符可以包括赋值运算符、一元运算符、算术运算符(二元运算符)、三元/三目运算符、比较运算符、逻辑运算符等࿰…...
E23.【C语言】练习:不创建第三个变量实现两个整数的交换
目录 题目条件 思路1( -) 思路2 (^)(XOR) 往期推荐 1.题目条件 禁止使用以上代码 2.思路1: -运算 aab; ba-b; aa-b; 但这样有潜在的问题 :a,b存储的数字过大,ab可能超过范围 因此改用思路2…...
如何搭建一个web系统?
需求 搭建一个web系统。 框架 设计:墨刀 前端:Vue.js 后端:Java 算法:Python 数据库:时序数据库,介绍 部署:Jekins https://www.jenkins.io/ 文档管理:Teambition 项目管理:禅道 代码管理:Gitlab 开发流程 设计文档和原型文档,功能接口设计࿰…...

三十种未授权访问漏洞复现 合集( 二 )
未授权访问漏洞介绍 未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。---->目录遍历 目前主要存在未授权访问漏洞的有:NFS服务&a…...
C语言学习笔记[29]:函数①
函数 在C语言中,函数是一段可以完成特定功能的代码,它们可以被重复调用。 函数的分类: 库函数自定义函数 库函数 在C语言中,库函数是由系统提供的,用于完成特定功能的函数,这些函数被集合在一起&#…...

使用Springboot + netty 打造聊天服务之Nacos集群问题记录
目录 1、前言1.1、方法一1.2、方法二 2、方案二实战2.1、在netty服务里加上ws连接、中断事件2.2、在netty服务里加上消息服务 4、总结 使用Springboot netty 打造聊天服务系列文章 第一章 初始搭建工程 第二章 Nacos集群问题记录 1、前言 在使用Springboot Nacos Netty(Web…...

全网唯一!R语言顶刊配色包TheBestColors
与Matlab相比,R语言在绘图方面有着天然的优势。 比如在配色方面,R语言有各式各样现成的包,按理说配色这种事应该很方便才对。 但实际体验下来,发现似乎不是那么回事。 首先,你很难记住每个包的调用方法以及每种配色…...

链表题型思路错误总结
常见题目 206. 反转链表 关键点:定义前置指针。 在给cur.next复制前,需要定义好next节点防止断链。 public ListNode reverseList(ListNode head) {if (head null || head.next null) {return head;}ListNode pre null;ListNode cur head;while(cur…...

算法学习day28
一、寻找右区间(二分法) 题意:题目很容易理解 但是转换为二分法有点晦涩 给你一个区间数组 intervals ,其中 intervals[i] [starti, endi] ,且每个 starti 都 不同 。区间 i 的 右侧区间 可以记作区间 j ,并满足 startj > e…...
C语言基础题:迷宫寻路(C语言版)
1.题目描述 机器猫被困在一个矩形迷宫里。 迷宫可以视为一个n x m 矩阵,每个位置要么是空地,要么是墙。机器猫只能从一个空地走到其上、下、左、右的空地。 机器猫初始时位于(1,1)的位置,问能否走到(n,m)位置。 2.输入格式 第一行࿰…...

力扣-1两数之和2两数相加-2024/8/3
1、两数之和 解法一 暴力法(2个for循环) class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for ii in range(len(nums)):for jj in range(ii1, len(nums)):if nums[ii]nums[jj] target:return [ii,jj]解法二 哈希表法…...
简站WordPress主题 专业的WordPress建站服务商
简站WordPress主题是一款备受推崇的WordPress主题,以其简洁、实用、无插件和更安全的特性脱颖而出。以下是关于简站WordPress主题的一些详细分析: 简站WordPress主题采用了扁平化设计风格,界面简洁明了,这使得网站看起来更加专业…...

Final Shell for Mac 虚拟机连接工具【简单易操作,轻松上手】【开发所需连接工具】
Mac分享吧 文章目录 效果一、下载软件二、安装软件三、运行测试安装完成!!! 效果 一、下载软件 下载软件 链接:http://www.macfxb.cn 二、安装软件 三、运行测试 安装完成!!!...
Oracle JDK:版本、支持与许可
文章目录 版本支持许可BCLOTNNFTCFAQ其他OpenJDK和其他的JDK实现JDK、JRE、JVMJava SE、Java EE、Java ME版本 Oracle JDK的最新版本和历史版本的官方下载地址(可查询版本发行说明等信息):https://www.oracle.com/cn/java/technologies/downloads/ 常规版本(非LTS):每隔…...

大模型学习笔记 - LLM 之RLHF人类对齐的简单总结
LLM - RLHF人类对齐的简单总结 LLM-人类对齐 1. RLHF(Reinforcement Learning from Human Feedback, RLHF),基于人类反馈的强化学习2 奖励模型训练3 强化学习训练 3.1 PPO介绍3.2 进阶的RLHF的介绍 3.2.1. 过程监督奖励模型3.2.2. 基于AI反馈的强化学习3.2.3. 非强化学习的对齐…...

【从零开始一步步学习VSOA开发】 概述
概述 概念 VSOA(Vehicle SOA)是翼辉为了解决任务关键型系统不能适用当前微服务通信架构问题而设计的⼀个轻量级适用于任务关键领域的微服务通信架构,以方便开发者构建大型分布式松耦合软件系统,且支持并行开发。 特点 其主要特…...

小程序背景图片无法通过 WXSS 获取
问题:pages/index/index.wxss 中的本地资源图片无法通过 WXSS 获取 可以使用网络图片,或者 base64,或者使用标签。 将图片转换为base64,地址 base64图片在线转换工具 - 站长工具 在这里把要使用的图片转换一把,然后将得…...

CC++内存魔术:掌控无形资源
hello,uu们,今天呢我们来详细讲解C&C的内存管理,好啦,废话不多讲,开干 1:C/C内存分布 2:C语言中动态内存管理方式:malloc/calloc/realloc/free 3:C内存管理方式 3.1:new/delete操作内置类型 3.1.1:代码1 3.1.2:代码2 3.2:new和delete操作自定义类型 3.2.1:C语言创建…...

算法--初阶
1、tips 1.1、set求交集 {1,2,3} & {2,3} & {1,2} {2} 其实就是位运算, 只有set可以这样使用, list没有这种用法 {1,2,3} | {2,3, 4} | {1,2} {1, 2, 3, 4} 并集 1.2、*与** * 序列(列表、元组)解包,如果是字典,那…...

通过Java实现插入排序(直接插入,希尔)与选择排序(直接选择,堆排)
目录 (一)插入排序 1.直接插入排序 (1)核心思想: (2)代码实现(以从小到大排序为例): (3)代码分析: 2.希尔排序(…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...

JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

使用python进行图像处理—图像变换(6)
图像变换是指改变图像的几何形状或空间位置的操作。常见的几何变换包括平移、旋转、缩放、剪切(shear)以及更复杂的仿射变换和透视变换。这些变换在图像配准、图像校正、创建特效等场景中非常有用。 6.1仿射变换(Affine Transformation) 仿射变换是一种…...