JS运算符

算数运算符

+ x + y
-
*
/
% 余数

自增、直减

x++ 等价与 x = x + 1
x–

赋值运算符

=
x += y 等价与 x = x + y
-=
*=
/=
%=

比较运算符

> < >= <=

相等 全等 不等 不全等

==
===
!=
!==

逻辑运算符

!
非运算,可将变量转换成boolean类型,null、undefined和空字符串取反都为true,其余都为false。
|| 短路或运算,第一个表达式成立,后面的表达式不运算,直接返回
&& 短路与运算,第一个表达式不成立,后面的表达式不运算,直接返回
| 非短路运算符,判断所有表达式
& 非短路运算符,判断所有表达式

!!

if(!!a){
    // a != null && typeof(a) != undefined && a != ''
    // a有内容才执行的代码...  
}

?. 可选链

let b = a?.name;

我们终于看到?.这个东西了,其实这个就叫做可选链,表达的意思,就和刚才if else的例子是一个意思,只有当a存在,同时a具有name属性的时候,才会把值赋给b,否则就会将undefined赋值给b。重要的是,不管a存在与否,这么做都不会报错。
还可以这样写:

let b = a?.name?.age;

?? 空值合并运算符
let b = a ?? c;
上面的例子,当a除了undefined、或者null之外的任何值,b都会等于a,否则就等于c。

~~

~~常用来向下取整
数字类型向下取整
任何boolen类型的,如果为TRUE则输出1,FALSE输出0;
其他除数字外的东西,一律输出 Number类型的0

? : 三元运算符

位运算符

| 按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1
& 按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0

位与运算的特殊用途:
一、清零(将一个单元与0进行位与运算结果为零)
二、取一个数指定位(例如取num=1010 1101的低四位 则将num&0xF得到0000 1101)。
三、判断奇偶性:用if ((a & 1) == 0) 代替 if (a % 2 == 0)来判断a是不是偶数。

^ 按位异或
若参加运算的两个二进制位值相同则为0,否则为1
~ 取反
~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1

~44 = -45
~-44 = 43
常用场景:
求相反数: ~a + 1

<< 左移
用来将一个数的各二进制位全部左移N位,右补0

常用场景:
左移常被用来做 * (2 ^ n)的运算,因为直接基于二进制运算,所以左移效率比 * (2 ^ n)高。

>> 右移
将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数, 高位补0

常用场景:
右移常被用来做 / (2 ^ n)的运算,因为直接基于二进制运算,所以右移效率比 / (2 ^ n)高。

>>> 无符号右移
运算符规则是:各二进位全部右移若干位,高位补0,低位丢弃。

ES7 指数操作符 **

**

**具有与 Math.pow(..)等效的计算结果
2 ** 10   等于   1024   等于   1 << 10

ES12 逻辑赋值操作符

??=
a ??= b 等同于 a = a ?? b
&&=
||=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值