运算符
算术运算符
-
number运算
- 加减乘除
- 余数
x%7 - 指数
x ** 3 - 自增自减
x++/++x/x-- - 求职运算符
+a - 负数运算符
-x
-
string 运算
- 连接运算 '123'+'456'
注意:尽量少用自增自减,因为容易你和别人都看不懂
不同类型不要加起来
比较运算符
>
<
>=
<=
==
!=
===
!==
//忠告:永远不要使用==,用===
===没有任何费解,基本类型看值是否相等,对象看地址是否相等
唯一一个例外 NaN!=NaN
布尔运算符
-
或且非
||&&!
-
短路逻辑
console&&console.log&&console.log('hi')- 以防console不存在而报错,这种写法叫做防御性编程
a=a||100设定一个a的保底值
二进制运算符
-
或、与、否
|两个位都为0,则结果为0,否则为1&~
-
异或
^- 两个位相同,则结果为0,否则为1
-
左移右移
<<和>>
-
头部补零的右移运算符
>>>
使用与运算符判断奇偶
偶数 &1 =0
奇数 &1=0
使用~,>>,<<,>>>,|来取整
console.log(~~,6.83)
console.log(6.83>>0)
console.log(6.83<<0)
console.log(6.83|0)
console.log(6.83>>>0)
使用^来交换a,b的值
let a=5;
let b=8;
a^=b
b^=a
a^=b
console.log(a) //8
console.log(b) //5
奇葩运算符
点运算符
-
语法
- 对象.属性名=属性值
-
作用
- 读取对象的属性值
-
有个疑问
明明有的时候不是对象的变量,为什么也可以有属性?
JS有特殊逻辑,点前面不是对象,就把它封装成对象,number会变成Number对象 string会变成String对象
bool会变成Boolean对象,程序员从不用这三种对象,只用简单类型
void 运算符
-
语法
- void表达式或语句
-
作用
- 求表达式的值,或执行语句
- 然后void的值总是为undefined
逗号运算符
-
语法
表达式1,表达式2,...,表达式n
-
作用
将表达式n的值作为整体的值
-
使用
- let a=(1,2,3,4,5)
- 那么a的值就是5
- 通常会这么使用
let f=(x)=>(console.log('平方值为'),x*x)
运算符的优先级
-
汇总表位于MDN
一共有20个运算符,怎么记忆呢
-
技巧
圆括号优先级最高,会用圆括号就行,其他一律不记