算术运算符
- 加法 + 数值求和或字符串拼接
- 减法 -
- 除法 /
- 乘法 *
- 求余 % 求余运算符返回第一个操作数对第二个操作数的模。
- 幕 ** 第一个操作数为底数,第二个参数为指数的乘方
- 递增 ++ ; x++ 递增前返回数值、++x 递增后返回数值
- 递减 —
- 一元负号 -
一元正号 + 在操作数前,若操作数不是数值,会尝试将其转换为一个数值
赋值运算符
简单赋值 x = 5
- 加赋值 x += y 把一个右值与一个变量相加,然后把相加的结果赋给该变量。
- 减赋值 x -= y
- 乘赋值 x *= 2
- 除赋值 x /= y
- 模赋值 x %= y 使一个变量除以右值,然后把余数赋给该变量
- 指数赋值 x **= y 使一个变量为底数、以右值为指数的指数运算结果赋给该变量
- 按位与赋值 x &= y => x = x & y; 与赋值使用两个操作值的二进制表示,执行按位与运算,并把结构赋给变量。
- 按位或赋值 x |= y => x = x | y; 按位或赋值使用两个操作值的二进制表示,执行按位或运算,并把结果赋给变量。
逗号操作符
对它的每个操作数求值(从左到右),并返回最后一个操作数的值。
如:for 循环
注:var 语句中的逗号不是逗号操作符,因为它不是存在于一个表达式中。
比较操作符
- 比较数字和字符串时,字符串会转换成数字值
- 如果其中一个操作数为布尔值,布尔值 true => 1, false => 0
- 如果一个对象与数字或字符串比较,js 会尝试返回对象的默认值。操作符会尝试
- 通过方法valueOf 和 toString 将对象转换为其原始值。如果尝试转换失败,会产生一个运行时错误。
相等运算符
== 会为两个不同的类型的操作数转换类型,然后进行严格比较。当两个操作数都是对象时,
JavaScript会比较其内部引用,当他们的内存地址。
1 == 1 // true
'1' == 1 // true
0 == false // true
!= 也会为两个不同的类型的操作数转换类型,然后进行比较。当是对象时,会比较其引用地址。
=== 严格相等,不会进行类型转换,仅当操作数严格相等时返回true.
!== 值不相等或类型不相等时返回true
关系运算符
, >=
<, <=
条件运算符
即 三元运算符, 常用作if语句的简短形式使用。
解构赋值
将值从数组,将属性从对象中提取到不同的变量中。
- 防止取出一个值为undefined的对象,可以预设默认值
- 给新的变量命名并提供默认值
圆括号运算符
用来控制表达式中的运算优先级。
逻辑运算符
短路运算符 && ||
// &&
a5 = 'Cat' && 'Dog' // Dog
a6 = false && 'Cat' // Cat
a7 = 'Cat' && false // false
a9 = false && '' // ''
// ||
o1 = false || true // true
o2 = 'Cat' || 'Dog' // Cat
o3 = false || '' // ''
o4 = '' || false // false
// !
n1 = !true // false
n2 = !false // true
n3 = !'' // true
n4 = !'Cat' // false
// !!
n1 = !!true // true
n2 = !!{} // true
n3 = !!false // false
n4 = !!'' // false
将AND 转为 OR
bCondition1 && bCondition2
!(!bCondition1 || !bCondition2)
将 OR 转为 AND
bCondition1 || bCondition2
!(!bCondition1 && !bCondition2)
删除嵌套的AND
bCondition1 || (bCondition2 && bCondition3)
bCondition1 || bCondition2 && bCondition3
删除嵌套的OR
bCondition1 && (bCondition2 || bCondition3)
!(bCondition1 || !bCondition2 && !bCondition3)
会被转换欸false 的表达式:
- null
- NaN
- 0
- 空字符(””, ‘’, ``)
- undefined