Number运算符
加减乘除 +,-,*,/
余数 x % y 10%7,余3
指数 x**3 7**3,7的3次方
求值运算符 +x 求一下x的值,不会把x是负数不会变成正数
负数运算符 -x x为负数,会变成正数
自增和自减 x++,++x/x--,--x
x++的值是x+之前的,++x的值是x+之后的
a在前表达式的值取之前的,a在后表达式的值取加之后的,自减也是
a++ === a+=1
尽量少使用自增自减,使用a+=1,因为a++和++a的值有区别,在for循环里使用a++
String运算符
连接运算
'123'+'456' = '123456'
+号可以把2个字符串连接起来,字符串只支持+号运算
数字加字符串,会先把数字变成字符串,在相加;字符串减数字,会先把字符串变成数字,在相减
比较运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
== 模糊等于
!= 不模糊等于
=== 全等于(基本类型看值是否相等,对象看地址是否相等)
!== 不全等于

三个不全等于 []!==[] {}!=={} NaN!==NaN
布尔运算符(或,且,非)
|| 或
&& 且
! 非
a=a||100
a是真,值为a=a;a是假(不存在),a=100,保底值
add(a=0){return a+1}
新语法
console&&console.log&&console.log('hi')
如果console存在,console.log存在,就执行console.log('hi');防御型代码,怕console被删除
二进制运算(或,与,否)
| 或 a | b,2个位都是0,则结果为0,否则为1
& 与 a & b,2个位都是1,则为1,否则为0
~ 否 ~ a,0为1,1为0
^ 异或 a ^ b,2个位相同,则结果为0,否则为1
<< 左移 a << b,将a的二进制形式向左移b(<32)比特位,右边用0填充
>> 无符号右移 a >> b,将a的二进制表示向右移b(<32)位,丢弃被移出的位
>>> 有符号右移 a >>>b,将a的二进制表示向右移b(<32)位,丢弃被移出的位,并使用0在左侧填充
0b11
0b的意思是告诉js我要写2进制的数了
(1)使用与运算符判断奇数偶数
偶数 & 1 = 0 偶数与一下1,结果是0
奇数 & 1 = 1 奇数与一下1,结果是1
(2)使用~,>>,<<,>>>,|来取整(位运算不支持小数)
console.log(~~6.83) 6,取反在取反
console.log(6.83>>0) 6
console.log(6.83<<0) 6
console.log(6.83|0) 6
console.log(6.83>>>0) 6
(3)使用^来交换a,b的值
var a=5,var b=8
a^=b /a=a^b
b^=a /b=b^a
a^=b /a=a^b
新语法
[a,b]=[b,a]
点运算符
语法
对象.属性名 = 属性值
作用
读取对象的属性值
不是对象,为什么也有属性值
JS有特殊逻辑,点前面不是对象,会封装成对象
number 变成Number对象
string 变成String对象
bool 变成Boolean对象
void运算符
语法
void 表达式或语句
作用
求表达式的值,或执行语句;然后void的值总是为undefined
需求
<a href='http://baidu.com' onclick='f(); return false;'>点击</a>
return假值可以阻止默认动作
<a href='javascript:void(f())'>文字</a>
使用void简写
逗号运算符
语法
表达式1,表达式2,........,表达式n
作用
将表达式n的值作为整体的值
使用
let a=(1,2,3,4,5)
那么a的值就是5
let f=(x)=>(console.log('平方值为'),x*x)
注意上面的括号不能省
运算符优先级(先算什么后算什么)
不同的运算符
1+2*3 是(1+2)*3 还是 1+(2*3)
!a===1 是(!a)===1 还是 !(a===1)
new Person().sayHi() 是什么意思
相同运算符
从左到右 a+b+c
从右到左 a=b=c=d
圆括号,最高优先级
详细资料点击:JavaScript 运算符