【Java 进阶篇】JavaScript二元运算符详解

news2025/9/21 2:06:31

在这里插入图片描述

JavaScript是一门多用途的编程语言,它支持各种运算符,包括二元运算符。二元运算符用于执行两个操作数之间的操作,这两个操作数通常是变量、值或表达式。在本篇博客中,我们将详细探讨JavaScript的二元运算符,包括它们的种类、用法以及示例。

什么是二元运算符?

在JavaScript中,二元运算符是一种需要两个操作数的运算符。操作数可以是变量、值或表达式,它们之间的操作由运算符决定。JavaScript中有许多不同的二元运算符,涵盖了各种数学、逻辑和比较操作。

算术运算符

算术运算符用于执行数学运算,包括加法、减法、乘法、除法和取模等操作。以下是JavaScript中常见的算术运算符:

  • 加法(+):用于将两个数相加。
let sum = 5 + 3; // sum 的值是 8
  • 减法(-):用于将一个数减去另一个数。
let difference = 10 - 4; // difference 的值是 6
  • 乘法(*):用于将两个数相乘。
let product = 6 * 7; // product 的值是 42
  • 除法(/):用于将一个数除以另一个数。
let quotient = 20 / 4; // quotient 的值是 5
  • 取模(%):用于获取一个数除以另一个数的余数。
let remainder = 10 % 3; // remainder 的值是 1
  • 自增(++):用于将一个变量的值增加1。
let x = 5;
x++; // 等同于 x = x + 1;
// 现在 x 的值是 6
  • 自减(–):用于将一个变量的值减少1。
let y = 8;
y--; // 等同于 y = y - 1;
// 现在 y 的值是 7

赋值运算符

赋值运算符用于将右侧的值分配给左侧的变量。JavaScript中的常见赋值运算符包括:

  • 赋值(=):将右侧的值赋给左侧的变量。
let a = 10;
  • 加法赋值(+=):将右侧的值与左侧的变量相加,并将结果赋给左侧的变量。
let b = 5;
b += 3; // 等同于 b = b + 3;
// 现在 b 的值是 8
  • 减法赋值(-=):将右侧的值从左侧的变量中减去,并将结果赋给左侧的变量。
let c = 7;
c -= 2; // 等同于 c = c - 2;
// 现在 c 的值是 5
  • 乘法赋值(*=):将右侧的值与左侧的变量相乘,并将结果赋给左侧的变量。
let d = 4;
d *= 6; // 等同于 d = d * 6;
// 现在 d 的值是 24
  • 除法赋值(/=):将左侧的变量除以右侧的值,并将结果赋给左侧的变量。
let e = 30;
e /= 3; // 等同于 e = e / 3;
// 现在 e 的值是 10
  • 取模赋值(%=):将左侧的变量除以右侧的值的余数,并将结果赋给左侧的变量。
let f = 13;
f %= 5; // 等同于 f= f % 5;
// 现在 f 的值是 3

比较运算符

比较运算符用于比较两个值,并返回一个布尔值(true或false)。以下是JavaScript中常见的比较运算符:

  • 相等(==):用于检查两个值是否相等。如果值相等,则返回true,否则返回false。
let isEqual = 5 == 5; // isEqual 的值是 true
  • 不相等(!=):用于检查两个值是否不相等。如果值不相等,则返回true,否则返回false。
let isNotEqual = 3 != 8; // isNotEqual 的值是 true
  • 全等(===):用于检查两个值是否全等,包括值和数据类型。如果值和数据类型都相等,则返回true,否则返回false。
let isStrictEqual = 5 === "5"; // isStrictEqual 的值是 false
  • 不全等(!==):用于检查两个值是否不全等。如果值或数据类型不相等,则返回true,否则返回false。
let isNotStrictEqual = 10 !== "10"; // isNotStrictEqual 的值是 true
  • 大于(>):用于检查一个值是否大于另一个值。如果第一个值大于第二个值,则返回true,否则返回false。
let isGreaterThan = 15 > 8; // isGreaterThan 的值是 true
  • 小于(<):用于检查一个值是否小于另一个值。如果第一个值小于第二个值,则返回true,否则返回false。
let isLessThan = 3 < 7; // isLessThan 的值是 true
  • 大于或等于(>=):用于检查一个值是否大于或等于另一个值。如果第一个值大于或等于第二个值,则返回true,否则返回false。
let isGreaterOrEqual = 20 >= 20; // isGreaterOrEqual 的值是 true
  • 小于或等于(<=):用于检查一个值是否小于或等于另一个值。如果第一个值小于或等于第二个值,则返回true,否则返回false。
let isLessOrEqual = 5 <= 4; // isLessOrEqual 的值是 false

逻辑运算符

逻辑运算符用于执行逻辑操作,通常用于布尔值。以下是JavaScript中常见的逻辑运算符:

  • 逻辑与(&&):用于同时检查两个条件是否都为true。如果两个条件都为true,则返回true,否则返回false。
let isBothTrue = true && true; // isBothTrue 的值是 true
  • 逻辑或(||):用于检查两个条件中是否至少有一个为true。如果至少有一个条件为true,则返回true,否则返回false。
let isEitherTrue = true || false; // isEitherTrue 的值是 true
  • 逻辑非(!):用于反转条件的值。如果条件为true,则返回false;如果条件为false,则返回true。
let isNotTrue = !true; // isNotTrue 的值是 false

位运算符

位运算符用于操作变量的二进制位。它们通常用于处理数字的底层二进制表示。以下是JavaScript中常见的位运算符:

  • 按位与(&):用于将两个数的二进制位进行按位与操作。
let bitwiseAnd = 5 & 3; // bitwiseAnd 的值是 1
  • 按位或(|):用于将两个数的二进制位进行按位或操作。
let bitwiseOr = 5 | 3; // bitwiseOr 的值是 7
  • 按位异或(^):用于将两个数的二进制位进行按位异或操作。
let bitwiseXor = 5 ^ 3; // bitwiseXor 的值是 6
  • 按位非(~):用于将一个数的二进制位进行按位非操作,将0变为1,将1变为0。
let bitwiseNot = ~5; // bitwiseNot 的值是 -6
  • 左移(<<):用于将一个数的二进制位向左移动指定数量的位数。
let leftShift = 4 << 2; // leftShift 的值是 16
  • 右移(>>):用于将一个数的二进制位向右移动指定数量的位数。
let rightShift = 16 >> 2; // rightShift 的值是 4
  • 无符号右移(>>>):用于将一个数的二进制位向右移动指定数量的位数,但不保留符号位。
let unsignedRightShift = -1 >>> 1; // unsignedRightShift 的值是 2147483647

条件运算符

条件运算符(也称为三元运算符)用于根据条件的结果选择不同的值。它的语法是 condition ? expr1 : expr2,其中 condition 是一个条件表达式,如果条件为true,则返回 expr1 的值,否则返回 expr2 的值。

let age = 20;
let message = age >= 18 ? "成年人" : "未成年人";
// message 的值是 "成年人"

运算符的优先级

在JavaScript中,不同类型的运算符有不同的优先级。如果表达式中有多个运算符,它们将按照一定的顺序执行。以下是一些常见运算符的优先级,从高到低:

  1. 小括号 ():用于分组表达式,具有最高优先级。
  2. 递增/递减运算符 ++--:紧随括号后,具有高优先级。
  3. 一元运算符 +-!~:紧随递增/递减运算符,具有高优先级。
  4. 乘法、除法、取模 */%:从左到右具有中等优先级。
  5. 加法和减法 +-:从左到右具有较低优先级。
  6. 位移运算符 <<>>>>>:从左到右具有较低优先级。
  7. 按位与 &:从左到右具有较低优先级。
  8. 按位异或 ^:从左到右具有较低优先级。
  9. 按位或 |:从左到右具有较低优先级。
  10. 比较运算符 <><=>=:从左到右具有较低优先级。
  11. 相等运算符 ==!====!==:从左到右具有较低优先级。
  12. 逻辑与 &&:从左到右具有较低优先级。
  13. 逻辑或 ||:从左到右具有较低优先级。
  14. 三元条件运算符 ? ::从右到左具有较低优先级。
  15. 赋值运算符 =+=-= 等:从右到左具有最低优先级。

示例代码

下面是一些示例代码,演示了JavaScript中二元运算符的用法:

// 算术运算符示例
let addition = 5 + 3; // 8
let subtraction = 10 - 4; // 6
let multiplication = 6 * 7; // 42
let division = 20 / 4; // 5
let modulus = 10 % 3; // 1
let increment = 5;
increment++; // 6
let decrement = 8;
decrement--; // 7

// 赋值运算符示例
let assign = 10; // 10
assign += 3; // 13
assign -= 2; // 11
assign *= 6; // 66
assign /= 3; // 22
assign %= 5; // 2

// 比较运算符
let isEqual = 5 == 5; // true
let isNotEqual = 3 != 8; // true
let isStrictEqual = 5 === "5"; // false
let isNotStrictEqual = 10 !== "10"; // true
let isGreaterThan = 15 > 8; // true
let isLessThan = 3 < 7; // true
let isGreaterOrEqual = 20 >= 20; // true
let isLessOrEqual = 5 <= 4; // false

// 逻辑运算符示例
let logicalAnd = true && true; // true
let logicalOr = true || false; // true
let logicalNot = !true; // false

// 位运算符示例
let bitwiseAnd = 5 & 3; // 1
let bitwiseOr = 5 | 3; // 7
let bitwiseXor = 5 ^ 3; // 6
let bitwiseNot = ~5; // -6
let leftShift = 4 << 2; // 16
let rightShift = 16 >> 2; // 4
let unsignedRightShift = -1 >>> 1; // 2147483647

// 条件运算符示例
let age = 20;
let message = age >= 18 ? "成年人" : "未成年人"; // "成年人"

结论

JavaScript的二元运算符是执行各种操作的重要工具。它们包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符和条件运算符。了解如何正确使用这些运算符对于编写有效的JavaScript代码至关重要。

希望这篇博客对您有所帮助,让您更好地理解JavaScript中的二元运算符以及它们的用法。如果您对JavaScript有更多疑问,可以继续学习更多关于这门强大编程语言的知识。

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1086045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud微服务(简略笔记一)

目录 介绍 ​编辑 认识微服务 单体架构 分布式架构 微服务分析&#xff1a; 分布式架构(SpringCloud微服务) 服务拆分与服务远程调用&#xff1a; 提供者与消费者 微服务治理 Eureka注册中心 操作步骤 Ribbon负载均衡 负载均衡流程 自定义负载均衡策略 饥饿加载 …

手把手改进yolo训练自己的数据(坑洼路面识别)

结果展示 在Pothole Detection数据集上对YOLOv7进行微调的步骤如下&#xff1a; 0 环境配置 if not os.path.exists(yolov7): !git clone https://github.com/WongKinYiu/yolov7.git %cd yolov7 !pip install -r requirements.txt数据集准备&#xff1a; 收集一个专门用于po…

栈的运行算法

一&#xff0c;顺序栈的静态分配 二&#xff0c;顺序栈的动态分配 #include<stdio.h> #include<stdlib.h> #define initsize 5 #define incresize 5typedef struct Sqstack{int *base;int *top;int stacksize; }Sqstack;void InitStack(Sqstack *s){(*s).base(int…

数字孪生技术:新零售的未来之路

随着科技的不断进步&#xff0c;新零售产业正经历着巨大的变革。数字孪生作为一种新兴技术正在加速这一变革的进程。它不仅为新零售企业带来了更高效的运营方式&#xff0c;还为消费者提供了更个性化、便捷的购物体验。那么&#xff0c;数字孪生技术究竟如何在新零售产业中发挥…

选择同步云盘工具?这些值得一试的优秀选择!

对于云盘用户而言&#xff0c;同步功能是影响产品选择的重要因素。在日常办公过程中&#xff0c;我们难免会遇到需要查看文件&#xff0c;但是存储文件的原设备不在身边的情况。这个时候同步云盘的重要性就显现出来了. 同步云盘的优势 文件同步&#xff1a;同步云盘可以将文件…

L05_SpringBoot入门

SpringBoot入门 浅谈Restful风格代码实现(并且通过Apifox进行接口测试[以传入json格式数据为例])首先创建一个SpringBoot项目,pom文件包引入如下下面在新建src创建com.ndky.controller包,然后再在包内创建一个HelloController类编写(一个简易的restful风格的代码)编写GET请求代…

正则表达式基础语法

https://tool.oschina.net/regex 正则表达式&#xff1a;检查、匹配字符串的表达式 单个字符匹配&#xff1a; 有特殊含义的匹配&#xff1a; 多次重复匹配&#xff1a; 限定开头结尾的匹配&#xff1a; 贪婪模式&#xff1a;在满足条件的情况下&#xff0c;尽可能多匹配…

Python算法练习 10.12

leetcode 649 Dota2参议院 Dota2 的世界里有两个阵营&#xff1a;Radiant&#xff08;天辉&#xff09;和 Dire&#xff08;夜魇&#xff09; Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每…

MNIST字符识别(C++)

构建网络 采用官方示例的的lenet网络 训练 相关文件都已编译好&#xff0c;下载后执行命令即可 .\caffe-bin.exe train --solver .\lenet_solver.prototxt 识别 #include <caffe/caffe.hpp>#include <opencv2/core/core.hpp> #include <opencv2/highgui/hi…

炒现货白银的最佳时间

天时地利人和是我们进行现货白银投资最关键的因素。天时是指我们因时而动&#xff0c;在适合的时机出击。地利&#xff0c;就是我们对市场的定位&#xff0c;对自己入场的定位有清晰的了解&#xff0c;并且这些位置对我们有利。人和就是指投资者的状态很好&#xff0c;对如何进…

STM32MP157按键中断实验

按键配置 #include "key_it.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_gic.h" #include "stm32mp1xx_exti.h" #include "stm32mp1xx_rcc.h"void key_it_config() {/* RCC使能GPIOF时钟 */RCC->MP_AHB4ENSE…

九章云极DataCanvas公司入选《AIGC产业链北京专精特新企业图谱》

近日&#xff0c;北京市经济和信息化局成功举办AIGC&#xff08;生成式人工智能&#xff09;产业链专精特新企业融通路演活动&#xff0c;并正式发布《AIGC产业链北京市专精特新企业图谱》&#xff08;下称《图谱》&#xff09;。九章云极DataCanvas公司凭借DataCanvas Alaya九…

Python- socket编程

Python中的socket模块为网络通信提供了基础API&#xff0c;使我们能够在应用程序中实现低级的网络交互。使用socket编程&#xff0c;可以创建TCP、UDP和RAW sockets来进行数据通信。 以下是Python socket 编程的简要概述&#xff1a; 1. 核心概念 Socket: 通信的端点&#x…

PTrade获取当日n个季度前的日期所处季度的最后一天——时间相关函数4

本文介绍的函数用于获取当日n个季度前的日期所处季度的最后一天&#xff08;有点绕&#xff0c;看后面例子就好理解了&#xff09;。 源码 def last_day_of_quarter_before_n_quarters(n):"""获取当日n个季度前的日期所处季度的最后一天:return: 当日n个季度前…

leetcode 打家劫舍篇

198. 打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个…

【嵌入式】STM32F031K4U6、STM32F031K6U6、STM32F031K6T6主流ARM Cortex-M0基本型系列MCU规格参数

一、电路原理图 【嵌入式】STM32F031K4U6、STM32F031K6U6、STM32F031K6T6主流ARM Cortex-M0基本型系列MCU —— 明佳达 二、规格参数 1、STM32F031K4U6&#xff08;16KB&#xff09;闪存 32UFQFPN 核心处理器&#xff1a;ARM Cortex-M0 内核规格&#xff1a;32 位单核 速度&a…

喜报!冲量在线中标中国电信北京公司2023年基于通用GPU的可信执行环境技术的研究项目

近日&#xff0c;冲量在线中标中国电信北京公司2023年基于通用GPU的可信执行环境的研究项目&#xff01;基于通用GPU的可信执行环境技术&#xff0c;完成业界领先的基于国产可信芯片的AI算力平台建设。 通过平台TEEGPU的隐私计算能力&#xff0c;给现有的AI智算平台在可信计算方…

必知必会的22种设计模式(GO语言)

日常工作中免不了使用设计模式&#xff0c;那么你使用了哪些设计模式呢&#xff1f; 设计模式是什么&#xff1f; 设计模式是一种在软件设计中对常见问题的通用解决方案。 它们是经过验证的、可重用的设计思想&#xff0c;可以帮助解决开发过程中遇到的各种问题。 设计模式…

碰撞检测算法——分离轴算法在Unity中实现(二)

一、介绍 分离轴算法&#xff08;简称SAT&#xff09;通常用于检查两个简单多边形&#xff08;凸边形&#xff09;之间或多边形与圆之间的碰撞。本质上&#xff0c;如果您能够绘制一条线来分隔两个多边形&#xff0c;则它们不会发生碰撞&#xff0c;如果找不到一条线来分割两个…

卷积神经网络CNN基础知识

目录 1 前言2 卷积神经网络CNN2.1 LeNet-5相关介绍2.2 CNN基本结构2.2.1 卷积层2.2.2 池化层&#xff08;下采样层&#xff09;2.2.3 全连接层2.2.3.1激励层&#xff08;非线性激活&#xff09;2.2.3.2 线性层2.2.3.3 Dropout层2.2.3.4 总结 2.3 图像的上采样和下采样2.3.1 上采…