JavaScript基础
运算符
算术运算符
-
数学运算符也叫算术运算符,主要包括加、减、乘、除、取余(求模)(取余在开发中经常用于判断某个数字是否能够被整除)
-
同时使用多个运算符编写程序时会按照某种顺序先后执行,我们称之为优先级,优先级越高越先被执行,优先级相同时按照从左至右的顺序依次执行
-
乘、除、取余的优先级相同,加、减的优先级相同,乘、除、取余的优先级大于加、减的优先级,使用()可以提升优先级
赋值运算符
-
对变量进行赋值的运算符
-
=
将等号右边的值赋给左边,要求左边必须是一个容器 -
其他赋值运算符
+=
、-=
、*=
、/=
、%=
使用这些运算符可以在对变量赋值时进行快速操作
-
一元运算符
-
运算符根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符
-
自增
- 符号 ++
- 作用 变量的值+1
-
自减
- 符号 –
- 作用 变量的值-1
-
经常用于计数使用
自增运算符的用法
-
前置自增 ++num
- 每执行一次,当前变量数值加1
- 其作用相当于num += 1
-
后置自增 num++
- 每执行一次,当前变量数值加1
- 其作用相当于num += 1
-
前置自增和后置自增单独使用没有区别,但如果前置自增和后置自增参与运算就会存在区别
- 前置自增 先自加再使用
- 后置自增 先使用后自加
- 在实际开发中,我们一般都是单独使用的,其中后置自增i++使用相对更多
比较运算符
- 作用 比较两个数据大小、是否相等(比较结果为boolean类型,即只会得到true或false)
比较运算符 | 说明 |
---|---|
> | 左边是否大于右边 |
< | 左边是否小于右边 |
>= | 左边是否大于或等于右边 |
<= | 左边是否小于或等于右边 |
== | 左右两边是否相等(只要值一样即可,不管数据类型) |
!= | 左右两边是否不等 |
=== | 左右两边是否类型和值都相等(推荐使用)(要求值和数据类型都一样) |
!== | 左右两边是否不全等 |
- 字符串的比较是比较字符对应的ASCLL码,从左往右依次比较,如果第一位一样继续比较第二位,以此类推
- NaN不等于任何值,包括它本身(NaN不等于NaN)(涉及到NaN都是false)
- 尽量不要比较小数,因为小数存在精度问题(需要去掉后面的部分再进行比较)
- 不同类型之间比较会发生隐式转换,即比较运算符会发生隐式转换(会把数据隐式转换成number类型再比较)
==
会进行类型转换而===
不会进行类型转换(建议使用===
(严格比较));!=
会进行类型转换而!==
不会进行类型转换(可以先对==
和===
进行判断再取反)
逻辑运算符
- 使用场景:逻辑运算符用来解决多重条件判断
符号 | 名称 | 特点 |
---|---|---|
&& | 逻辑与 | 符号两边都为true,结果才为true |
|| | 逻辑或 | 符号两边有一个true,结果就为true |
! | 逻辑非 | true变为false,false变为true |
逻辑运算符中的短路
- 短路只存在于&&和||中,当满足一定条件会让右边代码不执行
符号 | 短路条件 |
---|---|
&& | 左边为false则短路 |
|| | 左边为true则短路 |
-
原因 通过左边就能得到整个式子的结果,因此没必要再判断右边
-
在JS中可以对任意类型进行逻辑运算,包括如下六种假的情况(其余情况为真)
false
0
""
或''
(空双引号或空单引号)NaN
null
undefined
(未初始化类型)
运算符优先级
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 小括号 | () |
2 | 一元运算符 | ++、–、! |
3 | 算数运算符 | 先*、/、%后+、- |
4 | 关系运算符 | >、>=、<、<= |
5 | 相等运算符 | ==、!=、===、!== |
6 | 逻辑运算符 | 先&&后|| |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
- 一元运算符里面的逻辑非优先级很高
- 逻辑与比逻辑或的优先级更高