number运算
- 加减乘除
- 余数
x%7
- 指数
x ** 3
- 自增自减
a++
、a--
、++a
、--a
。变量在前面,表达式的值就是操作前的值。 - 求值运算符 +x
- 负数运算符 -x
尽量少用自增和自减,容易记错
string运算
- 连接运算
'123'+'456'='123456'
比较运算符
较为特殊的几个
- 不要使用
==
,换成===
。基本类型看值是否相等,对象看地址是否相等
[] === [] // true
{} === {} // true
NaN !== NaN // true
布尔运算符
- 或且非
||
、&&
、!
- 短路逻辑判断
&&
防御性编程
相当于新版本的?.
真值才往后执行
if (n) {
return n || 100;
}
// 优化
if(n = 100) {
return n;
}
二进制运算符
- 或
||
、与&
、否~
(ob1111 || ob0100).toString(2)
// 1111
- 异或
^
两位相同为0,否则为1 - 左移右移
>>
、<<
-头部补零额右移运算符>>>
与运算符判断奇,偶
基于二进制运算
ob0001 & 3 = 1 // 1 奇数、0 偶数
取整
基于二进制运算
console.log(~~ 1.23) // 1
console.log(1.23 >> 0) // 1
console.log(1.23 << 0) // 1
console.log(1.23 >>> 0) //1
console.log(1.23 | 0) // 1 与0 做或运算
^
异或,交换 两个变量a, b
相同为0,否则为1
var a= 5; // 0101
var b=8; // 1000
a = a^b;
b = b^a;
a = a^b;
console.log(a, b)// 8, 5
void
运算符
void的值总是undefined
逗号运算符
let a = (1,2,3,4)
a 的值就是5;
let f = (x) => {
console.log('print me')
return x+3
}
// 优化
let f = x => (console.log('print me', x+3)) //默认会将最后一个逗号后的作为返回值
不同运算符的优先级比较复杂, 因此只要记住,圆括号的优先级更高就可以了;相同运算符是自左至右;相同的赋值
a=b=c=7
自右向左
网友评论