JavaScript 运算符详解

引言

在 JavaScript 编程中,运算符是用于对数据进行操作的特殊符号。通过使用运算符,我们可以实现各种计算、比较和逻辑判断等功能。JavaScript 中的运算符种类丰富,涵盖了算术、比较、逻辑、赋值等多个方面。下面将详细介绍各类运算符及其使用方法,并结合代码示例进行说明。

一、算术运算符

算术运算符主要用于执行基本的数学运算,如加、减、乘、除等。

1. 加法运算符(+

加法运算符既可以用于数字相加,也可以用于字符串拼接。

// 数字相加
let num1 = 5;
let num2 = 3;
let sum = num1 + num2;
console.log(sum); // 输出: 8// 字符串拼接
let str1 = 'Hello';
let str2 = ' World';
let combinedStr = str1 + str2;
console.log(combinedStr); // 输出: Hello World

2. 减法运算符(-

减法运算符用于计算两个数字的差值。

let num3 = 10;
let num4 = 4;
let difference = num3 - num4;
console.log(difference); // 输出: 6

3. 乘法运算符(*

乘法运算符用于计算两个数字的乘积。

let num5 = 6;
let num6 = 2;
let product = num5 * num6;
console.log(product); // 输出: 12

4. 除法运算符(/

除法运算符用于计算两个数字的商。

let num7 = 15;
let num8 = 3;
let quotient = num7 / num8;
console.log(quotient); // 输出: 5

5. 取余运算符(%

取余运算符用于计算两个数字相除后的余数。

let num9 = 10;
let num10 = 3;
let remainder = num9 % num10;
console.log(remainder); // 输出: 1

6. 自增运算符(++

自增运算符用于将变量的值加 1,分为前置自增和后置自增。

let num11 = 5;
// 前置自增
let preIncrement = ++num11;
console.log(preIncrement); // 输出: 6
console.log(num11); // 输出: 6let num12 = 5;
// 后置自增
let postIncrement = num12++;
console.log(postIncrement); // 输出: 5
console.log(num12); // 输出: 6

7. 自减运算符(--

自减运算符用于将变量的值减 1,同样分为前置自减和后置自减。

let num13 = 8;
// 前置自减
let preDecrement = --num13;
console.log(preDecrement); // 输出: 7
console.log(num13); // 输出: 7let num14 = 8;
// 后置自减
let postDecrement = num14--;
console.log(postDecrement); // 输出: 8
console.log(num14); // 输出: 7

二、比较运算符

比较运算符用于比较两个值的大小关系,返回一个布尔值(truefalse)。

1. 等于运算符(==

等于运算符比较两个值是否相等,会进行类型转换。

let a = 5;
let b = '5';
console.log(a == b); // 输出: true

2. 严格等于运算符(===

严格等于运算符比较两个值是否相等,且要求类型也相同。

let c = 5;
let d = '5';
console.log(c === d); // 输出: false

3. 不等于运算符(!=

不等于运算符比较两个值是否不相等,会进行类型转换。

let e = 5;
let f = '6';
console.log(e != f); // 输出: true

4. 严格不等于运算符(!==

严格不等于运算符比较两个值是否不相等,且要求类型也不同。

let g = 5;
let h = '5';
console.log(g !== h); // 输出: true

5. 大于运算符(>

大于运算符比较左边的值是否大于右边的值。

let i = 10;
let j = 5;
console.log(i > j); // 输出: true

6. 小于运算符(<

小于运算符比较左边的值是否小于右边的值。

let k = 3;
let l = 8;
console.log(k < l); // 输出: true

7. 大于等于运算符(>=

大于等于运算符比较左边的值是否大于或等于右边的值。

let m = 5;
let n = 5;
console.log(m >= n); // 输出: true

8. 小于等于运算符(<=

小于等于运算符比较左边的值是否小于或等于右边的值。

let o = 2;
let p = 4;
console.log(o <= p); // 输出: true

三、逻辑运算符

逻辑运算符用于组合多个布尔值,进行逻辑判断。

1. 逻辑与运算符(&&

逻辑与运算符只有当两个操作数都为 true 时,结果才为 true

let isTrue1 = true;
let isTrue2 = true;
let isFalse = false;
console.log(isTrue1 && isTrue2); // 输出: true
console.log(isTrue1 && isFalse); // 输出: false

2. 逻辑或运算符(||

逻辑或运算符只要有一个操作数为 true,结果就为 true

console.log(isTrue1 || isFalse); // 输出: true
console.log(isFalse || isFalse); // 输出: false

3. 逻辑非运算符(!

逻辑非运算符用于取反操作,将 true 变为 false,将 false 变为 true

console.log(!isTrue1); // 输出: false
console.log(!isFalse); // 输出: true

四、赋值运算符

赋值运算符用于将一个值赋给一个变量。

1. 基本赋值运算符(=

基本赋值运算符将右边的值赋给左边的变量。

let x = 10;
console.log(x); // 输出: 10

2. 复合赋值运算符

复合赋值运算符结合了算术运算和赋值操作。

let y = 5;
// 加法赋值
y += 3; // 相当于 y = y + 3
console.log(y); // 输出: 8let z = 10;
// 减法赋值
z -= 4; // 相当于 z = z - 4
console.log(z); // 输出: 6let w = 2;
// 乘法赋值
w *= 5; // 相当于 w = w * 5
console.log(w); // 输出: 10let u = 12;
// 除法赋值
u /= 3; // 相当于 u = u / 3
console.log(u); // 输出: 4let v = 15;
// 取余赋值
v %= 4; // 相当于 v = v % 4
console.log(v); // 输出: 3

五、位运算符

位运算符用于对整数的二进制位进行操作。

1. 按位与运算符(&

按位与运算符对两个操作数的对应二进制位进行与运算。

let num15 = 5; // 二进制: 0101
let num16 = 3; // 二进制: 0011
let bitwiseAnd = num15 & num16; // 二进制: 0001
console.log(bitwiseAnd); // 输出: 1

2. 按位或运算符(|

按位或运算符对两个操作数的对应二进制位进行或运算。

let bitwiseOr = num15 | num16; // 二进制: 0111
console.log(bitwiseOr); // 输出: 7

3. 按位异或运算符(^

按位异或运算符对两个操作数的对应二进制位进行异或运算。

let bitwiseXor = num15 ^ num16; // 二进制: 0110
console.log(bitwiseXor); // 输出: 6

4. 按位取反运算符(~

按位取反运算符对操作数的每一个二进制位取反。

let num17 = 5; // 二进制: 0101
let bitwiseNot = ~num17; // 二进制: 1010(补码形式)
console.log(bitwiseNot); // 输出: -6

5. 左移运算符(<<

左移运算符将操作数的二进制位向左移动指定的位数。

let num18 = 5; // 二进制: 0101
let leftShift = num18 << 2; // 二进制: 010100
console.log(leftShift); // 输出: 20

6. 右移运算符(>>

右移运算符将操作数的二进制位向右移动指定的位数,符号位保持不变。

let num19 = 20; // 二进制: 010100
let rightShift = num19 >> 2; // 二进制: 000101
console.log(rightShift); // 输出: 5

7. 无符号右移运算符(>>>

无符号右移运算符将操作数的二进制位向右移动指定的位数,左边补 0。

let num20 = -20; 
let unsignedRightShift = num20 >>> 2; 
console.log(unsignedRightShift); 

六、条件运算符(三元运算符)

条件运算符是 JavaScript 中唯一的三元运算符,用于根据条件的真假返回不同的值。

let age = 18;
let message = age >= 18 ? '成年人' : '未成年人';
console.log(message); // 输出: 成年人

七、逗号运算符

逗号运算符用于在一条语句中执行多个表达式,并返回最后一个表达式的值。

let result = (1 + 2, 3 + 4, 5 + 6);
console.log(result); // 输出: 11

八、typeof 运算符

typeof 运算符用于返回一个表示数据类型的字符串。

let num21 = 10;
let str3 = 'hello';
let bool3 = true;
console.log(typeof num21); // 输出: number
console.log(typeof str3); // 输出: string
console.log(typeof bool3); // 输出: boolean

总结

JavaScript 中的运算符丰富多样,每种运算符都有其特定的用途和功能。掌握这些运算符的使用方法,能够帮助我们更高效地编写代码,实现各种复杂的功能。在实际开发中,要根据具体的需求选择合适的运算符,并注意运算符的优先级和结合性,以避免出现错误。

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

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

相关文章

基于javaweb的SpringBoot个人健康管理系统小程序微信小程序设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

责任链模式的C++实现示例

核心思想 责任链模式是一种行为设计模式&#xff0c;允许多个对象都有机会处理请求&#xff0c;从而避免请求的发送者与接收者之间的耦合。请求沿着处理链传递&#xff0c;直到某个对象处理它为止。 解决的问题 ​解耦请求发送者与处理者&#xff1a;请求的发送者无需知道具…

Java 无 GUI 浏览器:HtmlUnit 入门及实战 [特殊字符]

文章目录 HtmlUnit 入门功能简介入门案例更多功能HtmlUnit 实战需求页面分析编码参考⭐ 本文目标: HtmlUnit 框架入门HtmlUnit 框架实战:实现 HtmlUnit 访问 Web 页面,并实现 Web 页面按钮点击,同时获取到下载的文件。HtmlUnit 入门 🚀 官网:https://htmlunit.sourcefo…

微软 NativeAOT

微软Native AOT&#xff08;Ahead-Of-Time&#xff09;是.NET平台中一种新的运行模式&#xff0c;它直接将IL&#xff08;Intermediate Language&#xff0c;中间语言&#xff09;代码编译为目标平台的机器码发布&#xff0c;与JIT&#xff08;Just-In-Time&#xff0c;即时编译…

Vue项目搜索引擎优化(SEO)终极指南:从原理到实战

文章目录 1. SEO基础与Vue项目的挑战1.1 为什么Vue项目需要特殊SEO处理&#xff1f;1.2 搜索引擎爬虫工作原理 2. 服务端渲染&#xff08;SSR&#xff09;解决方案2.1 Nuxt.js框架实战原理代码实现流程图 2.2 自定义SSR实现 3. 静态站点生成&#xff08;SSG&#xff09;技术3.1…

Java 枚举

一、简介 Java 枚举是一种强大的工具&#xff0c;其本质上是一个继承自 java.lang.Enum 的类&#xff0c;用于定义一组固定的常量&#xff0c;每个枚举常量都是该枚举类的一个实例。枚举不仅提供了类型安全性&#xff0c;还可以像普通类一样拥有字段、方法和构造函数。枚举的使…

CentOS7安装DNS服务器bind

文章目录 安装DNS服务设置配置文件自定义域名解析完整配置 需求是公司内网服务器无法连接外网&#xff0c;需要在本地搭建DNS服务&#xff0c;这样物理机器迁移到内网后&#xff0c;通过域名解析访问服务 DNS服务器 172.25.14.215 ip域名172.25.14.216mysql.server172.25.14.2…

DFS刷题(25.3.13)

题目1——烤鸡 题目描述 题解 这是一个简单的暴搜题目&#xff0c;由于一共由10种配料&#xff0c;每种配料可以放1到3克&#xff0c;因此只需要用dfs对每种配料放入的质量进行暴力搜索即可&#xff0c;如果放入的配料质量之和等于题目给出的美味程度 n n n&#xff0c;记录一…

C#中除了Dictionary,List,HashSet,HashTable 还有哪些可以保存列表的数据类型?

在 C# 中&#xff0c;除了 Dictionary、List、HashSet 和 Hashtable 之外&#xff0c;还有许多其他可以保存列表或集合类型的数据结构&#xff0c;具体包括以下几类&#xff1a; &#x1f4cc; 数组类 1. Array&#xff08;数组&#xff09; 固定长度&#xff0c;性能高&…

《Python实战进阶》第21集:数据存储:Redis 与 MongoDB 的使用场景

第21集&#xff1a;数据存储&#xff1a;Redis 与 MongoDB 的使用场景 摘要 在现代应用开发中&#xff0c;数据存储的选择直接影响系统的性能、扩展性和成本。Redis 和 MongoDB 是两种极具代表性的数据库技术&#xff0c;它们分别擅长解决不同场景下的问题。本文将深入探讨 Re…

三视图转stl导出 空心面片体 networkx shapely triangle numpy-stl

from shapely.geometry import Polygon import triangle from shapely.ops import unary_union from stl import mesh import numpy as np from collections import defaultdict from 三维投影线段寻找 import get_adjusted_clusters,get_clusters,get_intersect_lines import …

大摩闭门会:250312 学习总结报告

如果图片分辨率不足&#xff0c;可右键图片在新标签打开图片或者下载末尾源文件进行查看 本文只是针对视频做相应学术记录&#xff0c;进行学习讨论使用

【51单片机】程序实验15.DS18B20温度传感器

主要参考学习资料&#xff1a;B站【普中官方】51单片机手把手教学视频 开发资料下载链接&#xff1a;http://www.prechin.cn/gongsixinwen/208.html 单片机套装&#xff1a;普中STC51单片机开发板A4标准版套餐7 目录 DS18B20介绍主要特性内部结构控制时序初始化时序写时序读时序…

ESP32芯片模组方案,设备物联网无线通信,WiFi蓝牙交互控制应用

在当下&#xff0c;物联网正以前所未有的速度席卷全球&#xff0c;从繁华都市的智能建筑&#xff0c;到宁静乡村的智慧农业&#xff0c;从人们日常使用的可穿戴设备&#xff0c;到工业领域复杂精密的自动化生产线&#xff0c;物联网的触角已深入到生活与生产的每一个角落。 而…

Linux第二次练习

1.首先在根下面创建一个名为text的目录 2.在根目录下新建一个text目录&#xff0c;然后在text目录中新建上图的一级目录、二级目录以及三级目录 3.显示/text目录下文件的树形拓扑图 4.将linux树状结构图中列出的所有文件用ll命令列出来

百鸡问题-

百鸡问题 #include<stdio.h> int main(){int n;scanf("%d",&n);int x,y,z;for(x0;x<100;x){for(y0;y<100;y){for(z0;z<100;z){if((x*15y*9z)<(3*n) && ((xyz)100)){printf("x%d,y%d,z%d\n",x,y,z);}}}}return 0; }

LVDS(Low Voltage Differential Signaling)电平详解

一、LVDS的定义与核心特性 LVDS&#xff08;低压差分信号&#xff09;是一种 低功耗、高速、抗干扰 的差分信号传输技术&#xff0c;通过一对互补的电压信号&#xff08;正负端差值&#xff09;传递数据。其核心特性包括&#xff1a; 电气特性 电压摆幅&#xff1a;差分电压约…

【OpenFeign 面试专题】

OpenFeign 面试专题 OpenFeign 的核心原理OpenFeign 如何与 Ribbon、Hystrix 集成Ribbon的负载均衡策略如何自定义 OpenFeign 的请求编码和响应解码OpenFeign 如何传递请求头&#xff08;Header&#xff09;信息OpenFeign 如何处理超时和重试OpenFeign 支持哪些 HTTP 客户端实现…

Adobe Acrobat Pro setting

防火墙断网组织弹窗 Adobe软件突然弹窗“THIS APP HAS BEEN DISABLED”&#xff1f;别慌&#xff0c;几步教你轻松解决&#xff01; 禁用代理 解决Adobe出现This unlicensed Photoshop app has been disabled.禁止使用 rules:- DOMAIN-KEYWORD,adobe,REJECT

搜索插入位置(js实现,LeetCode:35)

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入…