算术运算符

  • 加法 + 数值求和或字符串拼接
  • 减法 -
  • 除法 /
  • 乘法 *
  • 求余 % 求余运算符返回第一个操作数对第二个操作数的模。
  • 幕 ** 第一个操作数为底数,第二个参数为指数的乘方
  • 递增 ++ ; 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 == 1 // true
  2. '1' == 1 // true
  3. 0 == false // true

!= 也会为两个不同的类型的操作数转换类型,然后进行比较。当是对象时,会比较其引用地址。

=== 严格相等,不会进行类型转换,仅当操作数严格相等时返回true.

!== 值不相等或类型不相等时返回true

关系运算符

, >=
<, <=

条件运算符

即 三元运算符, 常用作if语句的简短形式使用。

解构赋值

将值从数组,将属性从对象中提取到不同的变量中。

  • 防止取出一个值为undefined的对象,可以预设默认值
  • 给新的变量命名并提供默认值

圆括号运算符

用来控制表达式中的运算优先级。

逻辑运算符

短路运算符 && ||

  1. // &&
  2. a5 = 'Cat' && 'Dog' // Dog
  3. a6 = false && 'Cat' // Cat
  4. a7 = 'Cat' && false // false
  5. a9 = false && '' // ''
  6. // ||
  7. o1 = false || true // true
  8. o2 = 'Cat' || 'Dog' // Cat
  9. o3 = false || '' // ''
  10. o4 = '' || false // false
  11. // !
  12. n1 = !true // false
  13. n2 = !false // true
  14. n3 = !'' // true
  15. n4 = !'Cat' // false
  16. // !!
  17. n1 = !!true // true
  18. n2 = !!{} // true
  19. n3 = !!false // false
  20. n4 = !!'' // false

将AND 转为 OR

  1. bCondition1 && bCondition2
  2. !(!bCondition1 || !bCondition2)

将 OR 转为 AND

  1. bCondition1 || bCondition2
  2. !(!bCondition1 && !bCondition2)

删除嵌套的AND

  1. bCondition1 || (bCondition2 && bCondition3)
  2. bCondition1 || bCondition2 && bCondition3

删除嵌套的OR

  1. bCondition1 && (bCondition2 || bCondition3)
  2. !(bCondition1 || !bCondition2 && !bCondition3)

会被转换欸false 的表达式:

  • null
  • NaN
  • 0
  • 空字符(””, ‘’, ``)
  • undefined

对象初始化

运算符优先级

属性访问器

展开语法