JavaScrip-运算符-知识点

运算符

  • 运算符
    • 运算符分类
    • 算术运算符
    • 递增和递减运算符
    • 比较运算符
    • 逻辑运算符
    • 赋值运算符
    • 三元运算符
    • 逗号运算符
    • 运算符优先级

运算符

运算符分类

  • 算术运算符
  • 递增和递减运算符
  • 比较运算符
  • 逻辑运算符
  • 赋值运算符
  • 三元运算符
  • 逗号运算符

算术运算符

概念:算术运算使用的符号,用于执行两个变量或值的算术运算。

运算符描述实例
+10 + 10 = 20
-10 - 10 = 0
*10 * 10 = 100
/10 / 10 = 1
%取模10 % 10 = 0

注意!!!

浮点数的精度问题

浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度容易丢失。

     var a = 0.1 + 0.4;var b = 0.1 + 0.5;console.log(a == b);   //结果为false 因为a为0.6000000000000001 ;b为0.6console.log(0.7 - 0.4); //结果:0.29999999999999993console.log(0.9 - 0.6); //结果:0.30000000000000004

结论:
浮点数进行算术计算时精度不准确,不能直接判断两个浮点数是否相等

表达式:

是由数字、运算符、变量等以能求得数值的有意义排列方法所得的组合

简单理解:表达式是由数字、运算符、变量等组成的式子

返回值:

表达式最终都会有一个结果,返回给开发者,称为返回值

//1 + 1 就是一个表达式
console.log(1 + 1);// 2就是返回值
//在程序中不用1 + 1 = 2;程序中是2 = 1 + 1;将右边的表达式计算完毕赋值给左边
var  num = 1 + 1;
consloe.log(num); //2就是返回值

递增和递减运算符

递增(++)递减( – ) 运算符放置在变量前面叫做前置递增(递减)运算符;放置在变量后面叫做后置递增(递减)运算符

注意!!!

递增和递减运算符必须和变量配合使用,不能是++11--

前置递增运算符:先自加,后返回值。

即++x运算时,是x先自加1,变为x=1,++x运算后返回值便是1

后置递增运算符:先返回原值,后自加 。

即y++运算时 先返回自加前的值,即y++返回值为0,然后再自加1,y=1

案例讲解:

var a = 10;
var b = a++ + ++a;
console.log(b);

案例解析

a++先返回原值,即a++等于10,但a加1后变为11,之后运算++a 是指11自加1后返回,即12。所以b等于10+12=22。

小结:

单独写++num 和 num++ 结果是一样的;与其他代码一起的时候,执行结果会不一样
一般使用后置递增(递减)运算符,且代码独占一行,例如:num++ 、num--

比较运算符

概念:比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true / false)作为比较运算的结果。

运算符名称说明案例结果
<小于号1<2true
>大于号1>2false
>=大于等于号2>=2true
< =小于等于号3<=2false
==判等号37==37true
!=不等号37!=37false
===全等号 比较两个操作数的值是否相等,同时检测它们的类型是否相同37===‘37’false
!==不全等号 比较两个操作数的值是否不相等,同时检测它们的类型是否不相同37!==‘37’true

=、==、===等号区别对比

符号作用用法
=赋值把右边给左边
==判断判断两边值是否相等(注意隐式转换)
===全等判断两边的值和数据类型是否完全相同

重点:隐式转换

在不同数据类型用双等号(==) 进行比较时,会有系统自动完成的一步类型转换。

> 字符串和数字比较时,字符串转换为数字,再进行比较运算。'10' == 10     // true
> 字符串和布尔值进行比较时,二者全部转换成数字,再进行比较运算。'1' == true    // true
> 布尔值和数字进行比较时,布尔转换为数字,再进行比较运算。0 == true     // false

代码演示:

console.log(21 == '21'); //true 经过隐式转换后两值相等
console.log(21 === '21'); //false 数据类型不一致
console.log(21 != '21'); //false 经过隐式转换后两值相等,所以!=为false
console.log(21 !== '21'); //true  数据类型不一致 所以不等是true

逻辑运算符

概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。后面开发中经常用于多个条件的判断

&& “逻辑与”,简称“与” (and) 【true && true】
|| “逻辑或”,简称“或” (or) 【true || false】
! “逻辑非”,简称“非” (not) 【! true】

逻辑与 【&&】类似于"并且" :两边都是 true才返回 true,否则返回 false
逻辑或 【| |】 类似于"或者" :一边为true或两边均为true 就返回 true,否则返回 false
逻辑非 【!】 逻辑非【!】也叫作取反符,用来取一个布尔值相反的值,如 true 的相反值是 false

短路运算(逻辑中断)

&& 和 || 的结果不一定是布尔类型。比如短路运算时。

短路运算的原理:
当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值。

①逻辑与&&短路运算

表达式1 && 表达式2 && 表达式3
&& 为取假运算,从左到右依次判断,如果遇到一个假值,就返回假值,以后不再执行,否则返回最后一个真值;

②逻辑或||短路运算

表达式1 || 表达式2 || 表达式3
|| 为取真运算,从左到右依次判断,如果遇到一个真值,就返回真值,以后不再执行,否则返回最后一个假值。

赋值运算符

概念:用来将右侧的值赋给左侧的变量的运算符。
=:直接赋值
*+=、-=:加、减 一个数 后在赋值
=、/=、%=:乘、除、取模 后在赋值

a = b 相当于常规表达式 : a = b
a += b 相当于常规表达式 : a = a + b
a -= b 相当于常规表达式 : a = a - b
a * = b 相当于常规表达式 : a = a * b
a /= b 相当于常规表达式 : a = a / b
a %= b 相当于常规表达式 : a = a % b //* 连续取模赋值是无意义的,因为结果都是一样的

三元运算符

三元运算符又叫条件运算符

语法:条件表达式?语句1:语句2

执行步骤:

  1. 三元运算符在执行时,首先对条件表达式进行求值
  • 如果结果为true,则执行语句1,并返回执行结果
  • 如果结果为false,则执行语句2,并返回执行结果

2.如果条件的表达式的求值结果是一个非布尔值

  • 会将其转换为布尔值,然后再运算

注意!!!

 三元运算有返回值,可用变量承接。

逗号运算符

逗号运算符可用于多个变量连续赋值

运算符优先级

  • 一元运算符里面的逻辑非优先级很高
  • 逻辑与逻辑或 优先级高

运算符的优先级:
1、 小括号 ()
2、 一元运算符: ++ - - !
3、 算术运算符: 先 * / % 后 + -
4、 关系运算符: > < >= <=
5、 相等运算符: == != === !==
6、 逻辑运算符: 先 && 后 ||
7、 三元运算符: 条件 ? 语句1 : 语句2
8、 赋值运算符: = += *= ……
9、 逗号运算符: ,

以上总结的知识点可能会有些错误的地方,如有更好的建议,欢迎您在评论区友善发言。

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

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

相关文章

运维体系中的那些Ops们

目录 前言 DevOps DevSecOps GitOps 1、缺少一致性 2、使用成本高 3、鉴权分散 4、审核审计困难 5、不可变基础设施扩展难 DataOps AIOps 总结 前言 提到运维&#xff0c;自然而然会联想到DevOps&#xff0c;大家应该还听说过DataOps、GitOps、DevSecOps、AIOps等…

K8s面试题——基础篇2

文章目录 一、简述 Kubernetes 如何保证集群的安全性二、简述 Kubernetes 准入机制三、简述 Kubernetes RBAC 及其特点&#xff08;优势&#xff09;四、简述 Kubernetes Secret 作用五、简述 Kubernetes Secret 有哪些使用方式六、简述 Kubernetes PodSecurityPolicy 机制七、…

rsync

rsync 文章目录 rsync1. rsync简介2. rsync特性3. rsync的ssh认证协议4. rsync命令5. rsyncinotify 1. rsync简介 rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步&#xff0c;支持本地复制&#xff0c;或者与其他SSH、rsync主机同步。 …

Kafka 集群部署

目录 1、环境准备 2、搭建ZooKeeper集群 配置文件 节点标记 环境变量 启动集群 数据同步测试 故障测试 3、搭建 Kafka 集群 配置文件 环境变量 配置其他机器 启动服务 4、集群测试 创建 Topic 显示 Topic 配置 创建 Producer 创建consumer 删除Topic 查看Z…

代码随想录算法训练营第21天 | 530.二叉搜索树的最小绝对差 + 501.二叉搜索树中的众数 + 236.二叉树的最近公共祖先

今日任务 530.二叉搜索树的最小绝对差 - Easy 501.二叉搜索树中的众数 - Easy 236.二叉树的最近公共祖先 - Medium 530.二叉搜索树的最小绝对差 - Easy 题目链接&#xff1a;力扣-530. 二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两…

Postgres操作jsonb数据

Postgres操作jsonb数据 PostgreSQL 对 jsonb 类型的筛选查询可以使用 -> 或者 ->> 操作符。 -> 操作符用于通过 JSON 对象中的键来获取对应的值。 ->> 操作符可以将获取到的值转化为字符串类型。 1 查询 -- 数据准备 CREATE TABLE test (id SERIAL PRIMARY …

windows下的私钥权限管理

被问到Windows的私钥是否可以共享给多个用户&#xff0c;我们知道CNG创建的私钥&#xff0c;压根就没有提供跨用户和组的机制&#xff0c;因此无论对称还是非对称&#xff0c;CNG中的私钥没办法在用户间共享。 Windows支持的SACL中的访问客体&#xff0c;也不包括密钥。 但是…

Vulnhub靶机:driftingblues 6

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;driftingblues6&#xff08;10.0.2.22&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entr…

服务拆分及远程调用

分布式架构都离不开服务的拆分&#xff0c;微服务也是一样。 1.微服务拆分 不同微服务&#xff0c;不要重复开发相同业务 微服务数据独立&#xff0c;不要访问其它微服务的数据库 微服务可以将自己的业务暴露为接口&#xff0c;供其它微服务调用 2.远程调用 以前时&#xf…

如何在Linux中使用~/.bashrc配置Java环境变量

为什么使用 ~/.bashrc 而不是 ~/.profile 原因 ~/.bashrc和~/.profile&#xff08;或在某些系统中是~/.bash_profile或~/.bash_login&#xff09;是用来配置用户的shell环境的两个不同的文件。它们的主要区别在于它们被加载的时机和适用的场合&#xff1a; ~/.bashrc主要用于…

1 python计算机基础

计算机基础和环境搭建 1 计算机基础和环境搭建1.计算机基础1.1 基本概念1.2 编程语言1.3 编译器/解释器 2.学习编程的本质3.Python的介绍3.1 语言的分类3.2 Python3.3 Python的解释器种类&#xff08;了解&#xff09;3.4 CPython解释器的版本 4.环境搭建4.1 安装Python解释器4…

关于C#中Monitor的wait/pulse的理解

wait&#xff1a;表示释放对象上的锁并阻止当前线程&#xff0c;直到它重新获取该锁。 pulse&#xff1a;表示通知等待队列中的线程锁定对象状态的更改。 当线程调用 Wait 时&#xff0c;它会释放对象上的锁并进入对象的等待队列。 对象的就绪队列中的下一个线程 (如果有一个…

Matlab交互式的局部放大图

在数据可视化中&#xff0c;很多时候需要对某一区间的数据进行局部放大&#xff0c;以获得对比度更高的可视化效果。下面利用 MATLAB 语言实现一个交互式的局部放大图绘制。 源码自行下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1yItVSinh6vU4ImlbZW6Deg?pwd9d…

《2023年度程序员收入报告》 :旧金山位居第一,北京程序员中位数超60万元

2024年刚刚拉开序幕&#xff0c;备受瞩目的程序员薪资调研报告再度登场。由知名数据采集平台levels.fyi 搜集并整理了《2023年全球程序员收入报告》&#xff0c;为我们揭示了程序员最新的收入情况&#xff0c;其中有哪些值得关注的亮点呢&#xff1f; 行情向好&#xff0c;大多…

burp靶场——XXE注入

XML 外部实体 (XXE) 注入 1. 什么是xxe漏洞&#xff1a; https://portswigger.net/web-security/xxe#what-is-xml-external-entity-injection XML 外部实体注入&#xff08;也称为 XXE&#xff09;是一种 Web 安全漏洞&#xff0c;允许攻击者干扰应用程序对 XML 数据的处理。…

GEE:机器学习分类中每个类别的概率图像可视化

作者:CSDN @ _养乐多_ 在 Google Earth Engine(GEE) 中应用机器学习分类器进行多分类时,有一个需求是想知道每个像素对于每个类别的分类概率。 比如在进行随机森林分类时,每个决策树会生成一个类别,通过投票选择票数最多的类别作为最终分类。除了最终分类结果,其他类别…

Pandas.DataFrame.groupby() 数据分组(数据透视、分类汇总) 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本&#xff1a; 本文基于 pandas2.1.2 编写。 关于本文内容更新&#xff1a; 随着pandas的stable版本更迭&#xff0c;本文持续更新&#xff0c;不断完善补充。 Pandas稳定版更新及变动内容整合专题&#xff1a; Pandas稳定版更新及变动迭持续更新。 Pandas API参…

计算机组成原理 运输层

文章目录 运输层运输层协议概述进程之间的通信运输层的两个主要协议运输层的端口 用户数据报协议 UDPUDP 概述UDP 的首部格式 传输控制协议 TCP 概述TCP 最主要的特点TCP 的连接 可靠传输的工作原理停止等待协议连续 ARQ协议 TCP 报文段的首部格式TCP 可靠传输的实现以字节为单…

TensorRT模型优化部署 (八)--模型剪枝Pruning

系列文章目录 第一章 TensorRT优化部署&#xff08;一&#xff09;–TensorRT和ONNX基础 第二章 TensorRT优化部署&#xff08;二&#xff09;–剖析ONNX架构 第三章 TensorRT优化部署&#xff08;三&#xff09;–ONNX注册算子 第四章 TensorRT模型优化部署&#xff08;四&am…