当前位置:网站首页>理解js运算符
理解js运算符
2022-07-31 05:11:00 【杂乱无章的我】
目录
运算符也叫操作符,通过运算符可以对一个或多个值进行运算,并且获取运算结果。比如:typeof就是一种运算符,可以获得一个值的类型。
算数运算符
算术运算符:
当对非数字类型值进行运算时,先将其转换为数字类型进行计算。
且任何值与NaN做运算都会得出NaN。
- +
+可以对两个值进行加法运算,并将结果返回。如:a=1+2;
如果对两个字符串进行加法运算,则会进行拼串。如:a="abc"+"d";a="abcd"
且任何的值和字符串做加法运算,都会先转换为字符串,然后再进行运算。
这个转换使用的是调用函数String()对其余类型的数值进行类型转换。
- -
-可以对两个值进行减法运算,并将结果返回。如:a=2-1;
- *
*可以对两个值进行乘法运算,并将结果返回。如: a=2*1;
- /
/可以对两个值进行除法运算,并将结果返回。如:a=2/1;
任何值做- * /运算时都会转换为Number
我们可以利用这一特点做隐式的类型转换
可以通过为一个值-0 *1 /1来将其转换为Number,原理和Number()函数一样。
- %
%可以对一个值进行取模运算(取余数)。如:a=6%2;一元运算符
一元运算符:
- 一元运算符,只需要一个操作数
+ 正号
- 正号不会对数字产生任何影响
- 负号
- 负号可以对数字进行负号的取反
- 对于非Number类型数据,
它会先将其转换为Number,然后再运算。可以对一个其他数据类型使用+,将其转换为number
它的原理和Number()函数一样。自增与自减
自增与自减:
- 自增 ++
- 通过自增可以使变量在自身的基础上增加1,对于一个变量自增后,原变量的值会立刻自加1。
- 自增分为两种:后加加(++)和前加加(++)。这两种方法均能是变量的值加一。
不同的区别是 ++a 与 a++ 的值不同
a++的值等于原变量的值 (自增前的值)a++ = a
++a的值等于原变量的新值 (自增后的值) b = a+1;++a = b;
- 自减 --
- 通过自减可以使变量在自身的基础上减少1,对于一个变量自减后,原变量的值会立刻自减1。
- 自减分为两种:后减减(--)和前减减(--)。这两种方法均能是变量的值减一。
不同的区别是 --a 与 a-- 的值不同
a--的值等于原变量的值 (自减前的值)a-- = a
--a的值等于原变量的新值 (自减后的值) b = a-1;--a = b;逻辑运算符
逻辑运算符:
js中为我们提供了三种逻辑运算符:
- ! 非
!可以用来对一个值进行逻辑非运算
所谓非运算就是指对一个布尔值进行取反操作,
true变false,false变为true。如a=false,!a=true
如果用非对一个值进行两次取反,它不会变化。如果对一个非布尔值进行运算,
则会将其转换为布尔值,然后再取反。我们可利用该特点将非布尔值转换为布尔值。
- && 与
&&可以对符号两侧值进行与逻辑运算并且返回结果。
两个值中只要有一个值为false就返回false,只有两个值都为true时,才会返回true。
js中的与是“短路的与”,当第一个值是false时,则不会看第二个值。
- || 或
||可以对符号两侧的值进行或逻辑运算并返回结果
两个值中只要有一个为true就返回true,只有两个值都为false时,才会返回false。
js中的“或”属于短路的或
如果第一个值为true,则不会在查看第二个值。
&& || 非布尔值的情况
- 对于非布尔值的数据进行与或运算时,会先将其转换为布尔值,然后再运算,并且返回原值
与运算:
- 如果第一个值为true,则必然返回第二个值
- 如果第一个值为false,则直接返回第一个值
或运算:
- 如果第一个值为true,则直接返回第一个值
- 如果第一个值为false,则直接返回第二个值赋值运算符
赋值运算符:
=
可以将符号右侧的值赋值给符号左侧的变量。如a=1;a="字符串";a=true;
+=
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;
两侧代码实现效果一样,在实际使用中自行选择。关系运算符
关系运算符:
通过关系运算符可以比较两个值之间的大小关系,如果关系成立返回true,否则返回false。
- > 大于号
判断符号左侧的值是否大于右侧的,如果成立,返回true。否则返回false。
- < 小于号
判断符号左侧的值是否小于右侧的,如果成立,返回true。否则返回false。
- >= 大于等于号
判断符号左侧的值是否大于等于右侧的,如果成立,返回true。否则返回false。
- <= 小于等于号
判断符号左侧的值是否小于等于右侧的,如果成立,返回true。否则返回false。
非数值的情况
- 对于非数值进行比较时,会将其先转换为数字在进行比较。
- 任何值与NaN做任何比较都是false
- 如果两侧的值都是字符串时,不会将其转换为数字进行比较,而会分别比较两端字符串的字符编码
比较字符编码时是一位一位进行比较,如果两位数值一样,则比较下一位。
- 比较字符串型的数字时,一定要先进行数据类型转换。相等运算符
相等运算符:
相等运算符用于比较两个值是否相等,如果相等返回true,否则返回false。
- 使用 == 来做相等运算
- 当使用==来进行相等比较时,如果两个值的类型不同,则会自动进行类型转换。
将其转换为相同的数据类型,在进行数据比较。
- undefined与null值进行数据比较时,会返回true
- NaN不和任何值相等,包括其本身。
!= 不等运算符用于判断两个值是否不等,如果不相等返回true,否则返回false。
- 使用 != 来做不相等运算
- 不相等运算符也会对变量进行自动的类型转换,然后再进行比较。
=== 全等运算符
- 用于判断两个值是否全等,它和相等类似,不同的是它不仅仅判断两个值的数据。
如果两个值的类型不等,直接返回false。如果两个数据内存地址不同,也会返回false。
!== 不全等运算符
- 用于判断两个值是否不全等,与全等判断机制相同。条件运算符(三元运算符)
条件运算符(三元运算符):
如:“条件表达式?语句1:语句2;”
条件运算符在执行时,首先对条件表达式进行求值。
如果该值为true,则执行语句1,并返回执行结果。如果该值为false,则执行语句2。
如果条件的表达式的求值结果是一个非布尔值,则先会进行数值转换,然后再进行运算。各运算符的优先级
| 1 | . 、[] 、new |
| 2 | () |
| 3 | ++、-- |
| 4 | !、~、+(单目)、-(单目)、typeof、void、delete |
| 5 | %、*、/ |
| 6 | +(双目)、-(双目) |
| 7 | <<、>>、>>> |
| 8 | <、<=、>、>= |
| 9 | ==、!==、=== |
| 10 | & |
| 11 | ^ |
| 12 | | |
| 13 | && |
| 14 | || |
| 15 | ?: |
| 16 | =、+=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、^=、|= |
| 17 | , |
边栏推荐
- Kubernetes certificate validity period modification
- 【云原生】开源数据分析 SPL 轻松应对 T+0
- 【Elastic-Job】分布式调度任务概览篇
- Understanding SSRF, this article is enough
- Artifact SSMwar exploded Error deploying artifact.See server log for details
- gin框架学习-GORM框架进阶之CRUD接口(数据库增删改查操作)
- leetcode-每日一题873. 最长的斐波那契子序列的长度(哈希和二分)
- 什么是EVM兼容链?
- 带你搞懂MySQL隔离级别,两个事务同时操作同一行数据会怎样?
- 2021面经-拥抱变化
猜你喜欢

The latest MySql installation teaching, very detailed

NFT:数字所有权的核心

vulhub靶场学习日记xxe-lab

feign调用不通问题,JSON parse error Illegal character ((CTRL-CHAR, code 31)) only regular white space (r

Linux中mysql密码修改方法(亲测可用)

Linux modify MySQL database password

12 【网页布局总结 元素的显示与隐藏】

GUCCI, LV and other luxury giant universe how to layout yuan, other brands should keep up with?

The process and specific code of sending SMS verification code using flask framework

Error: Cannot find module 'D:\Application\nodejs\node_modules\npm\bin\npm-cli.js'
随机推荐
NFT与数字藏品到底有何区别?
[windows]--- SQL Server 2008 super detailed installation tutorial
Using IIS10 to build an asp website in win11
Build vulhub vulnerability shooting range on kali
tf.keras.utils.pad_sequences()
变量的解构赋值
Volatility取证工具使用日记
File operations in C language (1)
gin框架学习-Casbin入门指南(ACL、RBAC、域内RBAC模型)
gin框架学习-GORM框架进阶之CRUD接口(数据库增删改查操作)
【Elastic-Job源码分析】——作业监听器
代码执行漏洞
闭包(三)----执行环境
年终总结——岁月静好~
碎片化NFT(Fractional NFT)
leetcode-1833. 雪糕的最大数量(排序+贪心)
leetcode-每日一题1217. 玩筹码(贪心+位运算)
12 【nextTick 过渡与动画】
gin框架学习-JWT认证
了解SSRF,这一篇就足够了