写在前头
大多数小伙伴看技术书籍都会用“啃”来描述读书的直观感受,当然我也是一个前端小白,白的透明那种,但是我在读技术书籍感觉到“啃”的时候,我希望把我啃红宝书第四版的过程的想法,总结带给大家,以供后来者能够更快上手。
注: 本文由于作者水平原因,如有错误之处,恳请大家指正,另外随着学习的深入,体会的加深,我会不断回来更新,修改这类文章。
思维导图
脉络 3.5操作符
这小节就是介绍了3.5操作符的3.5.8. 相等操作符,3.5.9. 赋值操作符,3.5.10. 条件操作符,3.5.11. 逗号操作符。
3.5操作符
简述
操作符,顾名思义就是用来操作数据值的一种符号。书上的解释也很详细,还涉及了使用方法转换对象,以便操作。
3.5.8. 相等操作符
js里面分为2种,全等,等于。
1. 等于和不等于
在比较之前执行转换
转换规则:
①null,undefined相等,且不转换。
②NaN 永远不可能相等。
③有数值,布尔转换数值。
④有对象,字符转换字符。
<script> console.log(null == undefined); // true console.log(NaN == NaN); // false console.log(NaN == 1); // false console.log(123 == '123'); // true console.log([] == ''); // true console.log([] == '0'); // false console.log([] == 0); // true </script> 复制代码
在 '0' == [] 中不进行数值转换,而是进行字符串转换,[] 转为字符串 '',因此结果为 false。
2. 全等和不全等
不转换就直接进行判断,数据类型不同直接不相等。
<script> console.log(null === undefined); // false console.log(NaN === NaN); // false console.log(NaN === 1); // false console.log(123 === '123'); // false console.log([] === ''); // false console.log([] === '0'); // false console.log([] === 0); // false </script> 复制代码
Object.is() 方法,用来严格判断相等。
由于全等会出现一些问题,所以使用objec.is()更严格准确。
<script> console.log(+0 === -0); // true console.log(NaN === NaN); // false console.log(Object.is(+0, -0)); // false console.log(Object.is(NaN, NaN)); // true </script> 复制代码
3.5.9. 赋值操作符
和c语言大体相同,“=”是直接赋值,“+=”这类是复合赋值赋值操作符。
简单赋值操作符
<script> var name = '张三'; </script> 复制代码
复合赋值赋值操作符
优点: 简写,性能优化
- 乘后赋值(*=)
- 除后赋值(/=)
- 取模后赋值(%=)
- 加后赋值(+=)
- 减后赋值(-=)
- 左移后赋值(<<=)
- 右移后赋值(>>=)
- 无符号右移后赋值(>>>=)
<script> let num = 2; num *= 2; // num = num * 2; console.log(num); // 4 </script> 复制代码
3.5.10. 条件操作符
三元运算符
S?A:B S满足 选A执行,否则B执行。
let num1 = 0; lt num2 = 1; let max = num1 > num2 ? num1 : num2; // max = num2 = 1; 复制代码
num1比num2大就将num1赋值给max,否则赋值num2给max
3.5.11. 逗号操作符
- 一条语句中同时声明多个变量
let num1 = 1, num2 = 2, num3 = 3; 复制代码
- 辅助赋值
let num = (5, 1, 4, 8, 0); // num 的值为0