# JS运算符

# 运算符类型:

  • 算术运算符

加法运算符(Addition):x + y 减法运算符(Subtraction): x - y 乘法运算符(Multiplication): x * y 除法运算符(Division):x / y 余数运算符(Remainder):x % y 自增运算符(Increment):++x 或者 x++ 自减运算符(Decrement):--x 或者 x-- 求负运算符(Negate):-x 数值运算符(Convert to number): +x

x++x--值为计算之前的值, ++x--x 值为计算之后的值

  • 比较运算符

== 相等 === 严格相等 !=不相等 !== 严格不相等 < 小于 <= 小于或等于 大于 = 大于或等于

=====的区别

//基本类型看值是否相等
//对象看地址是否相等
[] !== []
{} !== {}
NaN !== NaN

x === y 真值表

  • 布尔运算符

! 取反运算符 && 且运算符 || 或运算符

Test1:a = a || 0 什么含义? a的保底值为0

  • 二进制运算符

或运算(or):符号为|,表示两个二进制位中有一个为1,则结果为1,否则为0。 与运算(and):符号为&,表示两个二进制位都为1,则结果为1,否则为0。 否运算(not):符号为~,表示将一个二进制位变成相反值。 异或运算(xor):符号为ˆ,表示两个二进制位中有且仅有一个为1时,结果为1,否则为0。 左移运算(left shift):符号为<< 右移运算(right shift):符号为>> 带符号位的右移运算(zero filled right shift):符号为>>>

Test2:使用运算符判断奇偶

数字 & 1 
//结果若为 0 则为偶数,否则为奇数
7 & 1
1
8 & 1
0

Test3:使用运算符取整

console.log(~~ 5.12) // 5
console.log(5.12 >> 0) // 5
console.log(5.12 << 0) // 5
console.log(5.12 | 0) // 5
console.log(5.12 >>> 0) // 5

Test4:使用运算符交换ab值

var a = 5
var b = 8 
a ^= b 
b ^= a 
a ^= b 
console.log(a)  // 8
console.log(b) // 5

  • 其他运算符

逗号运算符 语法: 表达式1,表达式2,...表达式n 作用:将表达式n的值作为整体的值

let a =(1,2,3,4,5)
let f2 = (x)=>(console.log('x的平方为:'),x*x)

void运算符 语法: void 表达式或语句 作用:求表达式的值或执行语句,void的值总为undefined

# 运算符优先级