算术运算符
- number 运算:
-
加减乘除
-
余数 x % 7
-
指数 x ** 3
-
自增自减 x++ / ++x / x-- / --x x在前,值为前,x在后,值为后
-
求值运算符 +x
-
负数运算符 -x
- string 运算:连接运算 '123' + '456'
比较运算符
JS 三位一体
但是右边三个互不相等
忠告:永远不要使用 ==,用 === 代替,== 的问题在于,它总是自动类型转换
- ===没有任何费解 基本类型看值是否相等,对象看地址是否相等
- 额外记忆:
[] !== []
{} !== {}
NaN !== NaN
布尔运算符
- 或且非
- ||
- &&
- !
- 短路逻辑
-
console && console.log && console.log('hi'),以防 console 不存在报错
-
a = a || 100 a 的保底值,也可以用最新语法(完全没有问题的语法)
function add(n=0){
return n+1}
直接把保底值写在参数列表里,若是n不存在,则n=0,n的保底值就是0
二进制运算符
只对二进制数有效,0b开头表示是二进制写法
-
- 或、与、否
- | 两个位都为0,则结果为0,否则为1
- & 两个都为1,才为1
- ~ 否,1变成0,0变成1
- 异或 ^ 两个位相同,则结果为0,否则为1
- 左移右移 << 和 >>
- 头部补零的右移运算符
>>>
使用与运算符判断奇偶
代码
- 偶数 & 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 的值
代码
var a = 5
var b = 8
a ^= b
b ^= a
a ^= b
console.log(a) // 8
console.log(b) // 5
新语法:
var a = 5
var b = 8
[a,b]=[b,a]