【学习】JS 运算符
算术运算符
- number 运算
- 加减乘除
- 余数 x%2
- 指数 x**2
- 自增自减 x++ / ++x / x-- / --x
- 尽量少用,用x+=代替
- 求值运算符 +x
- 负数运算符 -x
- string 运算
- 连接运算 ‘123’+‘456’
比较运算符
-
>
-
<
-
>=
-
<=
-
==
(模糊相等) -
!=
-
===
(全等) -
!==
-
JS 三位一体
- 0 == []
0==‘0’
0==’\t’
左边三个互不相等
- 0 == []
永远不要使用 ==,使用 ===
NaN !== NaN
[] !== []
{} !== {}
布尔运算符
- || 或
- && 且
- ! 非
- 短路逻辑
console && console.log && console.log('hi')
以防console不存在报错a = a || 100
a的保底值
二进制运算符(只对二进制数有效)
- 或、与、否
- | 两个位都为0,则结果为0,否则为1
- &
- ~
- 异或
- ^
两个位相同,则结果为0,否则为1 - 左移和右移
- << 和 >>
- 头部补零的右移运算符
>>>
- ^
- 使用与运算符判断奇偶
- 偶数 &1 = 0
- 奇数 &1 = 1
- 使用
~,>>,<<.>>>,|
取整console.log(~~ 6.83)
6console.log(6.83 >> 0)
6console.log( 6.83 << 0)
6console.log( 6.83 | 0)
6console.log( 6.83 >>> 0)
6
- 使用 ^ 来交换 a b 的值
let a = 1
let b = 2
a ^= b
b ^= a
a ^= b
console.log(a) //2
console.log(b) //1
其他运算符
点运算符
只能作用在对象上
- 语法
对象.属性名 = 属性值
作用是读取或者设置对象的属性值 - 注意
- 不是对象,为何也可以有属性
JS 有特殊逻辑,. 前面不是对象,就把其封装为对象
number 会变成 Number对象
string 会变成 String对象
bool 会变成 Boolean对象
- 不是对象,为何也可以有属性
void 运算符
- 语法
void 表达式或语句
- 作用
- 求表达式的值,或执行语句
- void的值总是为 undefined
逗号运算符
- 语法
表达式1 , 表达式2 , … , 表达式n
- 作用
- 将表达式n的值作为整体的值
- 用法
let a = (1,2,3)
a的值为3let f = (x) => (console.log('值为'), x*x)
运算符优先级
括号优先级最高,随时使用括号决定优先级