网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
typeof undefined //undefined
typeof null //object
- 在需要进行数值类型的转换时,undefined会转换为NaN,无法参与计算;null会转换为0,可以参与计算。
undefined + 0 //NaN
null + 0 //0
- 无论在什么情况下都没有必要将一个变量显式设置为undefined。如果需要定义某个变量来保存将来要使用的对象,应该将其初始化为null。这样不仅能将null作为空对象指针的惯例,还有助于区分null和undefined。
Boolean
Boolean的字面值只有两个,分别是true和false,它们是区分大小写的,其他值(如True和False)并不是Boolean类型的值。
其他类型转换为Boolean类型规则
-
String类型
- 空字符串""或者’'(即双引号或单引号)都会转换为false
- 任何非空字符串都会转换为true,包括只有空格的字符串""
-
Number类型
- 0 和 NaN 会转换为false。
- 除了0和NaN以外,都会转换为true,包括表示无穷大和无穷小的Infinity和-Infinity。
-
Object类型
- 当object为null时,会转换为false。
- 如果object不为null,则都会转换为true,包括空对象{}。
- 任何Function类型的值都会转换为true
-
Null 和 Undefined 都会转换为 false
总结:undefined、null、false、+0、-0、NaN、“”、‘’ 会转换为false
Number
其他类型转换为Number类型规则
-
Boolean类型:true转换为1,false转换为0
-
Null类型: Null类型只有一个字面值null,直接转换为0。
-
Undefined类型: Undefined类型只有一个字面值undefined,直接转换为NaN。
-
String类型:
- 如果字符串中只包含数字,则会转换成十进制数;如果前面有0,会直接省略掉,例如"0123"会转换为123
- 如果字符串中包含的是有效的浮点数,则同样按照十进制转换,例如"1.23"会转换为1.23
- 如果字符串中包含有效的十六进制格式,则会按照十进制转换,例如"0x3f"会转换为63
- 如果是空字符串,