写在前头
大多数小伙伴看技术书籍都会用“啃”来描述读书的直观感受,当然我也是一个前端小白,白的透明那种,但是我在读技术书籍感觉到“啃”的时候,我希望把我啃红宝书第四版的过程的想法,总结带给大家,以供后来者能够更快上手。
注: 本文由于作者水平原因,如有错误之处,恳请大家指正,另外随着学习的深入,体会的加深,我会不断回来更新,修改这类文章。
思维导图
脉络 3.5操作符
这小节就是介绍了3.5操作符
3.5操作符
简述
操作符,顾名思义就是用来操作数据值的一种符号。书上的解释也很详细,还涉及了使用方法转换对象,以便操作。
3.5.6. 布尔操作符
- 逻辑非
先转换,再取反。true-> fasle false->true
- 始终返回布尔值
- 两个叹号(!!) == 转型函数Boolean()
“负负得正” 直接转换为布尔类型。和Boolean()功能相同。
<script> console.log(Boolean(123) === !!123); // true console.log(Boolean(NaN) === !!NaN); // true </script> 复制代码
- 逻辑与
- 用于任何类型的操作数,不限于布尔值
有false则false,全true才true。
- 使用 Boolean() 转型函数
①全对返2
②一对一错返false
③全错返1
<script> console.log('2' && 1); // 1 console.log(0 && ''); // 0 console.log(1 && ''); // '' </script> 复制代码
- 短路操作符
一错就停
停就是检测到false之后就不在运行了。
<script> console.log(false && undefined1); // fales 后面undefined1是一个没有声明的变量但是不会被执行 console.log(true && undefined2); // 前面是true 后面的undefined2是一个没有声明的变量但是这里会被执行,所以会报错。 </script> 复制代码
- 逻辑或
- 用于任何类型的操作数,不限于布尔值
与逻辑与相同。
- 使用 Boolean() 转型函数
①全对返1
②半对返true
③全错返2
<script> console.log('2' || 1); // 2 console.log(0 || ''); // '' console.log(1 || ''); // 1 </script> 复制代码
和逻辑与相反。
- 短路操作符
一对就停
<script> console.log(true || undefined2); // 前面是true 后面的undefined2是一个没有声明的变量但是但是不会被执行 console.log(false || undefined1); // fales 后面undefined1是一个没有声明的变量这里会被执行,所以会报错。 </script> 复制代码
避免给变量赋值null或undefined
给赋值的变量准备一个备选值。
let myObject = preferredObject || backupObject; 复制代码
preferredObject不是null,undefined就赋值他,如果是,就赋值后面的backupObject。
3.5.7. 关系操作符
- 返回布尔值
<script> console.log(2 < 3); // true </script> 复制代码
- 操作数都是字符串
①字母大小写统一
<script> let result = 'Brick'.toLowerCase() < 'alphabet'.toLowerCase(); // false </script> 复制代码
②数值字符串
逐个比较它们的字符编码
- 操作数中都没有对象
使用 Number(),否则,在对象上调用 valueOf(),如果可以获得原始值,否则,在对象上调用 toString(),如果可以获得原始值,否则,报错。