一、算术运算符
Number 运算
- 加减乘除
-
余数 %
- JS中-1%7是错误的先计算1%7然后再变成负数,得出-1
- 指数**
-
自增自减 a++ / ++a / a-- / -aa (尽量少用)
- a++表达式的值是a,++a的表达式的值是a+1
- a--表达式的值是a,--a的表达式的值是a-1
- 求值运算符号 +a 不是取正值
- 负数运算符 -a
String 运算
-
连接运算符 + '12'+'45' ='1245'
- 只支持+法运算,其它运算不支持
- 如果加号中运算中有非字符串,则转换为字符串,再相加,如果字符串-数字,则字符串转为数字,再相减(不同类型不要运算)
二、比较运算符
- >
- <
- >=
- <=
-
==
- 模糊相等,经常会自动进行类型转换(不推荐使用)
- 0==[],0=='0',0=='t' tab字符 , 但是[]!='0'!='t'
// 自相矛盾 var a =[] if(a){console.log('a')} else{console.log('a不等于true')}//a var a =[] if(a==true){console.log('a')} else{console.log('a不等于true')}//a不等于true
- !=
-
=== 全等
- 基本类型看值是否相等,类型不相等直接返回false
- 对象看地址是否相等
- []!==[],{}!=={},空对象不等于空对象,NaN !==NaN
- !==
三、布尔运算符
- 或且非|| && !
-
短路逻辑
- consloe&&console.log&&console.log('hi'),防御性编程,防止console不存在报错
- a =a||100,100为a的默认值,这种写法有一个bug,5个falsy值,可用以下语法计算
function add(n=0){return n+1}//n的默认值是0
四、进制运算符
- 或 :只要有一个为1,值就是1
- 与 :只有两个为均为1,值才为1
- 非: 取反
- 异或 :两个为相等为0,不相等为1
- 左移,右移<< >>
- 头部补零的右移运算符 >>>
二进制值 | 或 | 与 | 异或 |
---|---|---|---|
a | 1111 | 1111 | 1111 |
b | 1010 | 1010 | 1010 |
计算值 | 1111 | 1010 | 0101 |
使用运算符计算值奇偶
- 偶数 & 1 = 0
- 奇数 & 1 = 1
使用运算符取整数值
//原理:位运算会抹除小数部分
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
使用运算符交换a b的值
- 新语法[a,b] =[b,a]
- 位运算
a^=b,b^=a,a^=b
点运算符,读取对象的属性值
*对象.属性名 = 属性值
- 不是对象,也可以用点运算符,因为如果前面不是对象,则会转换成对象,然后运算点运算符
void 运算符
- void 表达式或者语句
- 求表达式的值,或执行语句,然后void 的值总是undefined
- 用法: <a href ="javascript:void(f())">
逗号 运算符
- let a=(1,2) a=2
let f = x=>{console.log('a');return x+1}
let f3= x=>(console.log('a'), x+1)//简写方式
运算符的优先级
- 圆括号优先级最高
- 逗号优先级最低
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。