持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情
JavaScript运算符是我们在实际开发中非常常用的一部分语法内容,高效利用JavaScript运算符及其技巧,可以帮助我们写出更优质的JavaScript代码,增强代码逻辑性。
1. 算术运算符
常见算数运算符:+ - * / %
%:取余,两个数相处,但是不是取商,而取余数,俗称 模,例:
5 % 2 // 1
2 % 5 // 2
%取余常用场景:
(1)获取某个数字的最后n位
console.log(12345%10);
console.log(12345%100);
(2)判断奇偶性
如下示例,结果为0,说明是偶数,结果为1,说明是奇数。
num % 2;
算数运算之中具有隐式转换:悄悄默默的转换数据类型,算术运算默认都转为数字在运算。
特殊:+运算,只要有一边是一个字符串,两边都会悄悄变为字符串,+运算变成字符串拼接。
注意:转为数字的时候,如果是一个纯数字组成的字符串,没有问题,但是如果出现了非数字字符,则为NaN,NaN参与任何运算结果仍为NaN****
2.关系运算符
(1) 结果必定是一个
boolean值(2)只要一边出现数值, 就都是数值比较的规则,如果转不了就
NaN为 false(3)如果都是字符, 就按照字符的比较规则
(4)
0<9<A<Z<a<z(5)!==和===不具有隐式转换, 不仅比较大小, 还会比较类型
3.逻辑运算符
&&(与、而且) ||(或者) !(非)结果是boolean值
(1) &&只有全部条件都满足,最后结果才为true,只要有一个条件不满足, 结果就为false
(2) &&的短路逻辑:条件&&操作
(3)||只要一个条件为true,结果则为true,只有全部条件为false,才 为false
(4) ! 取反, 颠倒布尔值
特殊:短路逻辑:
a、 &&:如果前一个条件为true,则后一个操作才执行
如果前一个条件为false,则后一个操作不执行
固定套路:实现了简化版的if结构:if(){},注意只能是 简单的if操作,操作只有一句话的时候
语法:条件&&(操作);
比如:
```js
if(total>=500){total*=0.8;}
total>=500&&(total*=0.8);
```
if vs &&短路:
1、&&短路:操作只有一句话的时候
2、if:操作只有多句话的时候
b、 ||:如果前一个条件为true,则后一个不需要再管
如果前一个条件为false,需要看看后一个
语法:var x=值1||值2;
作用:做老IE兼容,实现了两个值二选一
4.赋值运算符
(1)含义:赋值运算:一句话执行了两个操作:运算,再保存回去
+= -= *= /= %=
(2)何时使用:只要取出变量的值做了计算,之后还要在保存回去时,就必须使用赋值运算
total=total*0.8;//total*=0.8;
m+=n;//m=m+n;//累加
m*=n;//m=m*n;//累乘
(3)递增 和 递减
i++ => i+=1 => i=i+1
累加 和 递增
如果每次操作数固定是1,使用递增,否则,使用累加
(4)前++ 和 后++ 有区别
单独使用时,两者没有区别都会+1
但是如果参与了别的表达式,i肯定会+1
前++,返回的是加了之后的新值
后++,返回的是加了之前的旧值
5. 一元运算符
(1) 在参与其他表达式的时候, 前自增(自减)会先计算, 在使用
(2)在参与其他表达式的时候, 后自增(自减)会使用, 在计算
6.三目运算符
使用格式:
条件? 条件为 true 的操作: 条件为 false 的操作
7.位运算
(1)左移:a<<n, 相当于 a 乘 2 的 n 次方
(2)右移:a>>n, 相当于 a 除 2 的 n 次方
(3)取整:m>>>0 || m^0
8.比较运算
(1)包含:> < >= <= == != === !==
返回:true、false
隐式转换:默认一切都转为数字,再比较大小
特殊:
a、 如果参与比较的两个值都是字符串
会按位pk每个字符串16进制unicode号(10进制ascii码)
直到比出结果位置
0-9<A-Z<a-z 中文(第一个字:一:4e00)
(最后一个字:龥:9fa5)
b、 NaN不大于,不小于,不等于任何值,包括自己
结论:无法使用普通的关系运算,判断一个数字是不是NaN
解决:isNaN():判断是不是NaN
经常反用:!isNaN(x):判断x是不是一个有效数字
c、 必须用:undefined===null
全等:===:数值相同,类型相同
其实就是不带隐式转换的等值比较
注意:想要区分null和undefined必须使用全等
例:重写String():写出String()的原理
function String(x){
if(x===null){
return "null";
}else if(x===undefined){
return "undefined";
}else{
return x.toString();
}
}
console.log(String(123));
console.log(String(null));
console.log(String(undefined));