运算符
运算符优先级:MDN
算数运算符
运算符 | 作用 |
---|---|
+ | 求和 |
- | 求差 |
* | 求积 |
/ | 求商 |
% | 求余 |
++ | i++ :++ 在后,先把 i 赋值给 i++,然后 i 自增 1++i :++ 在前,先让 i 自加 1,然后把 i 赋值给 ++i |
-- | i-- :-- 在后,先把 i 赋值给 i--,然后 i 自减 1--i :-- 在前,先让 i 自减 1,然后把 i 赋值给 --i |
%
用途:
- 求余,判断一个数是否能被另一个数整除,取余求得的余数为 0 则被整除,如判断一个数是否为偶数可以对 2 取余
- 获取一个数字每个位上的数字,如 678 的百位 678/100,十位 678/10%10,个位 678%10
- 获取某个范围内的随机数,任何一个数字对 6 取余,结果都位于 0~5 之间,取余后加 1 可以获得 1~6 随机数
赋值运算符
运算符 | 作用 |
---|---|
= | 赋值,等号左侧为变量,右侧为值,把等号右侧的值赋予左侧的变量 |
+= | i+=6 等价于 i=i+6 |
-= | i-=6 等价于 i=i-6 |
*= | i*=6 等价于 i=i*6 |
/= | i/=6 等价于 i=i/6 |
条件(比较)运算符
运算符 | 作用 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
== | 值相等,不区别类型 |
!= | 不相等,不区别类型 |
=== | 值相等,严格区别类型 |
!== | 不相等,严格区别类型 |
- 比较运算符表达式最终的值都是布尔值
逻辑运算符
运算符 | 作用 |
---|---|
&& | 与,前面为真取后面的值作为表达式的值 前面为假取后面的值作为表达式的值 |
` | |
! | 非,非真即假,非假即真,最终结果为布尔值 |
问号冒号表达式
?:
先判断问号前的表达式的值是否为真(不是布尔值会转化为布尔值),若为真则取冒号前表达式的值作为整个表达式的值,冒号后的表达式不会执行,若为假,则去冒号后的值作为整个表达式的值,冒号前的表达式不执行
数据类型转化
显式转化
调用函数 | 转化结果 |
---|---|
Number() | 纯数字字符串转化为数字,非纯数字字符串转化为 NaN ,空字符串或空白字符串转化为 0布尔值 true 转化为 1,false 转化为 0undefined 转化为 NaN null 转化为 0 |
parseInt() | 从字符串开头提取整数,可以有空白字符 |
parseFloat() | 从字符串开头提取小数,可以有空白字符 |
String() | 任何类型转字符串会以字符串类型原样输出(相当于加引号) |
Boolean() | 数字类型的 0 和 NaN 为 false ,其余为 true 空字符串转化为 false ,其余为 true ,空白字符串也会转化为 true undefined 转化为 false null 转化为 false |
隐式转化
在进行运算和条件判断是会自动发生类型转化
数字运算比较
- 1/0 infinity
- 0/1 0
- 0/0 NaN
- -1/0 -infinity
- 1%0 NaN
NaN
参与运算结果为NaN
NaN
参与比较大小结果为false
NaN
不等于NaN
字符串运算比较
- 字符串相加为拼接字符串,其余均为转化为数字,大多数情况是
NaN
- 字符串比较大小会根据字符串开头字符的 Unicode 码依次比较
布尔值运算比较
- 布尔值运算时转化为数字(1 true,0 false)
- 布尔值判等是不需要转化数字
undefined 运算比较
undefined
运算时转化为数字NaN
undefined
判等时不需要转化数字
null 运算比较
null
参与运算时转化为 1null
判等时不需要转化为数字- 空串和
null
不相等 false
和null
不相等0
和null
不相等undefined
和null
相等