JavaScript基础之运算符详解

运算符

算术运算符

算术运算符:也叫数学运算符,主要包括加、减、乘、除、取余(求模)等。算术运算符接收数值作为操作数并返回单个数值。数值可以是文字或变量。

运算符举例说明
+4+2 //返回6求和
-4-2 //返回2求差
*4*2 //返回8求积
/4/2 //返回2求商
%4%2 //返回0取模(取余数),开发中经常用于作为某个数字是否被整除

注意:在计算失败时,显示的结果是 NaN (not a number)

示例:加法运算符

			var a=10,b=5;var x="2",y="4";//1.+加法var sum=x+y;console.log(10+5);  //输出值:15console.log(sum);   //输出值:24

在减法运算符中,如果值是字符串、布尔值、Null或未定义,JavaScript引擎将:

  • 首先,使用该函数将值转换为数字Number()
  • 其次,再在进行减法
    示例:减法运算符
		//2.-减法console.log(10-5);  //输出值:5console.log("10"-1);  //输出值:9//布尔值true运算相当于1console.log(true-10);  //输出值:-9,//布尔值false运算相当于0console.log(false-10); //输出值:-10console.log(true-false);  //输出值:1var s;console.log(10-s);  //输出值:NaNconsole.log(s-10);  //输出值:NaNvar x=null;console.log(10-x);  //输出值:10

在乘法运算符中,如果任一值都不是数字,JavaScript引擎会使用该Number()函数将其隐式转换为数字并执行乘法
示例:乘法运算符(*)

	//3. *乘法console.log(10*5);  //输出值:50console.log("2"*2);  //输出值:4

在除法运算符(/)中,如果其中一个值不是数字,JavaScript引擎会将其转换为数字以进行除法
示例:除法运算符

		//4.除法console.log(10/2);  //输出值:5console.log("4"/2);  //输出值:2

示例:余数运算符

		//5.余数console.log(-11 % 2);  //输出值:-1console.log(5 % 2);    //输出值:1console.log(10 % 0);   //输出值:NaN

JavaScrpt中优先级越高越先被执行,优先级相同时以书从左向右执行

  • 乘,除,取余优先级相同
  • 加,减优先级相同
  • 乘,除,取余优先级大于加,减
  • 使用 () 可以提升优先级

总结:先乘除后加减,有括号先算括号里面的

赋值运算符

赋值运算符(=)是对变量进行赋值的运算符。= 是将等号右边的值赋予给左边, 要求左边必须是一个容器(变量)

语法:

var x=y;

下表说明了赋值运算符,是另一个运算符和赋值的缩写

运算符示例等同于
=x = yx = y
+=x += yx= x + y
-+x -= yx = x - y
*=x * = yx=x * y
/=x / = yx= x / y
&=x & = yx= x & y
| =x | =yx= x | y
^ =x ^ =yx=x ^ y
** =x ** =yx= x ** y
<<=x << = yx= x << y
>>=x >> =yx = x >> y
>>>=x >>> yx = x >>> y

示例:

	var x=10,y=1;		x +=10;console.log(x); //输出值:20x -=2;console.log(x);  //输出值:18y *=5console.log(y);  //输出值:5x /=10;console.log(x);  //输出值:1.8	x %=10;console.log(x);  //输出值:1.8

一元运算符

一元运算符作用于一个值。下表显示一元运算符及其含义:

一元运算符说明作用
+x一元加将值转换为数字
- x一元减将值转换为数字并将其取反
++x自增运算符(前缀)变量自身的值加1
–x自减运算符(前缀)变量自身的值减1
x++自增运算符(后缀)变量自身的值加1
x–自减运算符(后缀)变量自身的值减1

一元加号(+)

一元加号是一个简单的加号(+)。如果将一元加号放在数值之前,则不会执行任何操作。示例如下:

var x=10;
var y=+x;
console.log(y);  //输出值:10

当你将一元运算符应用于非数字值时,它会使用Number()具有以下表中规则的函数执行数字转换:

结果
booleanfalse相当于0,true相当于1
string根据一组特定规则转换为数字值
object调用valueOf() 或 toString()方法来获取转换为数字的值

示例:使用一元运算符将字符串转换“10”为数字10

//1.使用一元运算符将字符串转换"10"为数字10var s="10";console.log(typeof +s);  //输出值:numberconsole.log(s);   //输出值:10

示例:使用一元加运算符 ( +) 将布尔值转换为数字false为0和true为 1。

//2.true为1,false为0var a=true,b=false;console.log(+a);  //输出值:1console.log(+b);  //输出值:0

一元减号(-

一元减号运算符是单个减号(-)。如果将一元减运算符应用于数字,则会对该数字求负。以下示例:

var minX=10;
var minY=-minX;
console.log(minY);  //输出值:-10

如果将一元减运算符应用于非数字值,它会使用与一元加运算符相同的规则将该值转换为数字,然后对该值求反。

自增/自减运算符

自增运算符有两个加号(++),自减运算符有两个减号(

自增和自减运算符都有两个版本:前缀和后缀。您可以将自增或自减运算符的前缀和后缀版本放置在它们所应用的变量之前和之后。

前缀递增或递减时,JavaScript 在计算语句之前会更改变量

 // 1. 前置自增//前缀递增或递减时,JavaScript 在计算语句之前会更改变量var i = 1,t=1;++i;--t;console.log(i,t);  //输出值:2,0var i = 1,t=1;console.log(++i + 1);   // 输出值:3console.log(--t +1);   //输出值:1

后缀递增或递减运算符在计算语句后更改值

		 //2. 后置自增//后缀递增或递减运算符在计算语句后更改值var i = 1,t=1;i++;t--;console.log(i,t);  //输出值:2 0var i = 1,t=1;console.log(i++ + 1);  //输出值:2console.log(t-- +1);   //输出值:2console.log(i,t);  //输出值:2  0

将递增/递减运算符应用于非数字值时,它执行以下步骤:

  • 首先,使用与一元加 (+) 运算符相同的规则将值转换为数字。
  • 然后,对该值加一或减一。

注意:

  • 只有变量能够使用自增和自减运算符
  • 可以在变量前面也可以在变量后面,比如: x 或者 ++x

位运算符

在JavaScript中,位运算执行时会先将操作数转换为二进制数,操作完成后将返回值转换为十进制。

位运算符作用如下

运算符描述举例等同于结果十进制
&5&10101&000100011
|5|10101|000101015
^异或5^10101^000101004
<<有符号左位移5<<10101<<1101010
>>有符号右位移5>>10101>>100102
>>>无符号右位移5>>>10101>>>100102
<script>
console.log(5&1);  //输出值: 1
console.log(5|1);  //输出值: 5
console.log(5^1);   //输出值:4
console.log(5<<1);  //输出值:10
console.log(5>>1);  //输出值:2
console.log(5>>>1);  //输出值:2
</script>

比较运算符

JavaScript脚本语言中比较运算符用于比较两个数据大小、是否相等,根据比较结果返回一个布尔值(true / false),指示比较结果是否为真

下表显示JavaScript中的比较运算符

运算符作用
>左边是否大于右边
<左边是否小于右边
>=左边是否大于或等于右边
<=左边是否小于或等于右边
==左右两边是否相等
===左右两边是否类型都相等
!=左右值不相等
!==左右两边是否不全等(类型之一不相等)
<script>console.log(3 > 5)console.log(3 >= 3)console.log(2 == 2)// 比较运算符有隐式转换 把'2' 转换为 2  双等号 只判断值console.log(2 == '2')  // true// console.log(undefined === null)// === 全等 判断 值 和 数据类型都一样才行// 以后判断是否相等 请用 ===  console.log(2 === '2')console.log(NaN === NaN) // NaN 不等于任何人,包括他自己console.log(2 !== '2')  // true  console.log(2 != '2') // false console.log('a' < 'b') // trueconsole.log('aa' < 'ab') // trueconsole.log('aa' < 'aac') // true
</script>

逻辑运算符

在JavaScript中,逻辑运算符用于两个逻辑型数据之间的操作,返回值的数据类型为布尔值。可以把多个布尔值放到一起运算,最终返回一个布尔值

运算符描述特点口诀
&&逻辑与符号两边有一个假的结果为假一假则假
||逻辑或符号两边有一个真的结果为真一真则真
!逻辑非true变false false变true真变假,假变真
ABA && BA || B!A
falsefalsefalsefalsetrue
falsetruefalsetruetrue
truefalsefalsetruefalse
truetruetruetruefalse

示例:

<script>//逻辑与 一假则假console.log(true && true); //输出值:trueconsole.log(false && true); //输出值:falseconsole.log(true && false);  //输出值:falseconsole.log(false && false);  //输出值:flse//逻辑或  一真则真console.log(true || true);	 //输出值:trueconsole.log(true || false);   //输出值:trueconsole.log(false || true );  //输出值:trueconsole.log(false || false);  //输出值:false//逻辑非  取反console.log(!true);  //输出值:falseconsole.log(!false);  //输出值:true
</script>

逻辑运算符优先级: !> && > ||

三元运算符

三元运算符是JavaScript唯一使用三个操作数的运算符:一个条件后跟一个问号(?),如果条件为真,则执行冒号(:)前的表达式;若条件为假,则执行最后的表达式。

语法:

condition ? exprIfTrue : exprIfFalse

参数说明

  • condition:计算结果用作条件的表达式
  • exprIfTrue:如果condition计算结果为真(true),则执行该表达式
  • exprIfFalse:如果condition计算结果为假(false),则执行该表达式

除了false,可能的假值表达式还有:null,NaN,0,空字符串(“”)undefined。如果condition是其中任何一个,那么三元运算符中就执行exprIfFalse表达式执行的结果

示例:

<script>var a=10,b=2,max;max=a>b?a:b;console.log(max);  //输出值:10
</script>

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

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

相关文章

力扣经典题:用栈表示队列

1.在元素入栈完成时&#xff0c;再出栈进入到另一个栈的时候&#xff0c;另一个栈的栈顶元素就是队列的队尾元素 2.初始化操作完全与上一题相同 3.peek函数的实现&#xff1a;将1的思路写出来&#xff0c;再返回第二个队列的栈顶元素 4.pop函数就是将peek函数进行实现后将to…

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现SPI控制OLED屏幕

上一篇&#xff1a; [嵌入式软件][启蒙篇][仿真平台] STM32F103实现LED、按键 [嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集 [嵌入式软件][启蒙篇][仿真平台]STM32F103实现定时器 [嵌入式软件][启蒙篇][仿真平台] STM32F103实现IIC控制OLED屏幕 文章目…

HIS预约挂号系统源码 看病挂号快人一步

提到去大型医院机构就诊时&#xff0c;许多人都感到恐惧。有些人一旦走进医院的门诊大厅&#xff0c;就感到迷茫&#xff0c;既无法理解导医台医生的建议&#xff0c;也找不到应该去哪个科室进行检查。实际上&#xff0c;就医也是一门学问&#xff0c;如何优化时间分配&#xf…

AIGC专题:从0到1精益创新 AIGC产品应用及商业化落地实践

今天分享的是AIGC系列深度研究报告&#xff1a;《AIGC专题&#xff1a;从0到1精益创新 AIGC产品应用及商业化落地实践》。 &#xff08;报告出品方&#xff1a;易点天下&#xff09; 报告共计&#xff1a;38页 企业内部增效-AI知识库 企业内部IT、运维、人力资源、行政等等日…

都 2024 年了!程序员的到底出路在哪里!?继续卷技术?晋升管理层?还是转业?

都 2024 年了&#xff01;程序员的到底出路在哪里&#xff01;&#xff1f;继续卷技术&#xff1f;晋升管理层&#xff1f;还是转业&#xff1f; 1&#xff09;程序员的难处2&#xff09;程序员专业方向3&#xff09;大数据3.1.大数据开发涉及到哪些技术3.2.大数据开发涉及到的…

C语言assert断言详解指针(3)

各位少年&#xff0c;大家好&#xff0c;我是博主那一脸阳光&#xff0c;今天分享assert法官的断言&#xff0c;指针宝箱的使用。 前言&#xff1a;如果你在计算机的世界中触犯了语法法规&#xff0c;那么编译器就要上线了&#xff0c;就会出现报错。然而想想我们在现实中设计到…

OpenAI Gym 中级教程----深入解析 Gym 代码和结构

Python OpenAI Gym 中级教程&#xff1a;深入解析 Gym 代码和结构 OpenAI Gym 是一个用于开发和测试强化学习算法的工具包。在本篇博客中&#xff0c;我们将深入解析 Gym 的代码和结构&#xff0c;了解 Gym 是如何设计和实现的&#xff0c;并通过代码示例来说明关键概念。 1.…

仰暮计划|“一周一顿的玉米面和白面蒸的糕点,是当时所能吃到的极好的食物”

平淡又记忆深刻的一生 口述人&#xff1a;元奶奶 整理人&#xff1a;宋佳音 口述人基本信息&#xff1a;女 出生于1958年&#xff0c;今年65周岁&#xff0c;祖籍东北&#xff0c;现定居于上海&#xff0c;已从制药厂退休十余年。 元奶奶的自述&#xff1a; 我出生于1958年…

B样条基函数

​定义&#xff1a;令U{u0,u1,…,um}是一个单调不减的实数序列&#xff0c;即ui≤ui1&#xff0c;i0&#xff0c;1&#xff0c;…&#xff0c;m-1。其中&#xff0c;ui称为节点&#xff0c;U称为节点矢量&#xff0c;用Ni,p(u)表示第i个p次&#xff08;p1阶&#xff09;B样条基…

asp.net core通过读取配置文件来动态生成接口

如果希望接口是每次通过配置文件生成的&#xff0c;这样设计一些低代码的方式来获得接口。 系统目录结构&#xff1a; 启动配置代码&#xff1a; using Microsoft.AspNetCore.Hosting; using System.Configuration; using System.Data.Entity; using Swashbuckle.AspNetCore.…

算法训练营day19,二叉树8-1

type TreeNode struct { Val int Left *TreeNode Right *TreeNode } 235. 二叉搜索树的最近公共祖先 //本题比昨天236二叉树的最近公共祖先 要容易一些&#xff0c;因为二叉搜索树是有序的 func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode { if root nil {…

[Python] 什么是PCA降维技术以及scikit-learn中PCA类使用案例(图文教程,含详细代码)

什么是维度&#xff1f; 对于Numpy中数组来说&#xff0c;维度就是功能shape返回的结果&#xff0c;shape中返回了几个数字&#xff0c;就是几维。索引以外的数据&#xff0c;不分行列的叫一维&#xff08;此时shape返回唯一的维度上的数据个数&#xff09;&#xff0c;有行列…

【学网攻】 第(14)节 -- 动态路由(EIGRP)

系列文章目录 目录 系列文章目录 文章目录 前言 一、动态路由EIGRP是什么&#xff1f; 二、实验 1.引入 实验步骤 实验拓扑图 实验配置 看到D开头是便是我们的EIGRP动态路由 总结 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学…

day36WEB攻防-通用漏洞XSS 跨站MXSSUXSSFlashXSSPDFXSS

本章知识点不是很重要&#xff0c;涉及到的漏洞也不是常见的&#xff0c;所以没有过多的阐述。 配套资源&#xff08;百度网盘&#xff09; 链接&#xff1a;https://pan.baidu.com/s/1xTp14wE-mqEr7EHU9nSCrg?pwdnlsg 提取码&#xff1a;nlsg MXSS突变型XSS漏洞 MXSS参考链接…

阿里云智能集团副总裁安筱鹏:企业数字化的终局是什么?

以下文章来源于数字化企业 &#xff0c;作者安筱鹏博士 回答数字化终局追问的起点是&#xff0c;企业需要重新定义我是谁。成为有竞争力的行业领导厂商&#xff0c;你应当成为一个客户运营商&#xff0c;即能够实时洞察、实时满足客户需求&#xff0c;追求极致的客户体验。而要…

版本管理工具git: 谨慎使用git中的撤回操作

文章目录 一、背景二、解决方案1、步骤一2、步骤二 三、参考 一、背景 昨天代码分支提交错了&#xff0c;idea中使用了如下操作&#xff0c;结果代码不见了 二、解决方案 1、步骤一 使用git reflog命令&#xff0c;查看提交记录&#xff0c;找到之前commit操作的哈希值 …

共享粒子群算法 优化svm 分类 代码实战

import numpy as np from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import accuracy_score # 加载数据集 iris datasets.load_iris() X iris.data y iris.target # 划分数据集 X…

pgsql中in 和 join 怎么选

前提&#xff1a; 两个表只有一个关联字段 IN的使用&#xff1a; 1、适用场景&#xff1a;当需要关联的数据量较小时&#xff08;例如几十到几百条&#xff09;&#xff0c;使用IN是可以接受的。IN子句通常用于WHERE条件中&#xff0c;以指定某列的值是否在给定列表中。 2、性…

雾锁王国Enshrouded个人专服怎么搭建?怎么多人联机一起玩?

前面跟大家分享了『零基础也可以10秒开服幻兽帕鲁&#xff0c;只需要鼠标点击几下即可自动部署』一文&#xff0c;大家可以快速搭建属于自己的幻兽帕鲁专服。现在我们同样可以在10秒搭建雾锁王国专服&#xff0c;让您与朋友一起合作战胜强大的Boss。 雾锁王国&#xff1a;你是火…

Docker本地部署可编辑开源导航页并发布公网分享好友可访问

文章目录 1. 使用Docker搜索镜像2. 下载镜像3. 查看镜像4. 启动容器5. 浏览器访问6. 远程访问6.1 内网穿透工具安装6.2 创建远程连接公网地址6.3 使用固定二级子域名地址远程访问 今天和大家分享如何使用Docker本地部署一个开源的简约风格网址导航页&#xff0c;支持五种搜索引…