JS运算符

186 阅读2分钟
  1. 算术运算符
  • number运算
加减乘除
余数 x % 7
指数 x ** 3
自增自减 x++ / ++x / x-- / --x
求值运算符 +x
负值运算符 -x
  • string运算

连接运算 '123'+'456'

  1. 比较运算符
>
<
>=
<=
== : 模糊相等
!= : 不模糊相等
=== :全等
!== : 不全等

0 == []; 
0 == '0'; 
0 == '/t';
但是右侧三个互不相等;

[] == false 但不是falsy
[] == false 但{}却不是
[[]] == false

[] !== []
{} !== {}
基本类型看值,对象看地址
NaN !== NaN

  1. 布尔运算符

或且非

||
&&
!

短路逻辑
console && console.log && console.log('hi')
以防console不存在报错
a = a || 100
a的保底值

  1. 二进制位运算符
或、与、否
|两个位都为0,则结果位0,否则为1
& 两个都为1才是1,否则为0
~ 取反

异或
^
两个位相同,则结果为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
  1. 其他运算符
  • 点运算符: 对象.属性名 = 属性值
  • 读取对象的属性值,点只能用在对象上面,若前面不是对象,则将前面变为对象,调用完之后再改回原来的类型

void运算符,void表达式或语句

  • 作用:求表达式的值,或执行语句,然后void的值总是为undefined

  • 在a标签中return false可以阻止默认动作,将其改为void(f())作用相同

  • 逗号运算符:表达式1,表达式2,表达式n

  • 作用:将表达式n的值作为整体的值

let a = (1,2,3,4,5)
那么a的值就是5
let f = (x) => (console.log('平方值为'),x*x)
注意上面的括号不能省