🧑🏻写在前面的话:
这个系列文章可能开始,有人会觉得很low,我是打算从H5先开始整理,最后到常见的前端框架、以及一些前端常见的算法、leetcode的一些算法解析,感兴趣的小伙伴可以持续关注,每天分享一个前端知识点,希望大家一起进步。
为什么出现类型转换,主要原因是js在定义变量的时候没有类型声明,所以任意的两个字面量都可以进行加减乘除,在进行这些操作的时候就会牵扯出类型转,当然类型转换在我们日常的开发中也是肯定会遇到的。
1.在JS中加(+)有特殊的含义(可以进行字符串拼接),所以我们先从+说起:
-
当一侧为String类型,被识别为字符串拼接,并会优先将另一侧转换为字符串类型。
-
当一侧为Number类型,另一侧为原始类型,则将原始类型转换为Number类型。
-
当一侧为Number类型,另一侧为引用类型,将引用类型和Number类型转换成字符串后拼接。
这三条规则优先级从高到低
2.我们在对各种非Number类型运用数学运算符(- * /)时,会先将非Number类型转换为Number类型
- 1 - true // 0, 首先把 true 转换为数字 1, 然后执行 1 - 1
- 1 - null // 1, 首先把 null 转换为数字 0, 然后执行 1 - 0
- 1 * undefined // NaN, undefined 转换为数字是 NaN
3.逻辑语句中的类型转换
1.单个变量
只有null undefined ‘’ NaN 0 false 是false 其他情况都是 true
2.使用 ==
- NaN和其他任何类型比较永远返回false(包括和他自己)。
- Boolean 和其他任何类型比较,Boolean 首先被转换为 Number 类型
- String和Number比较,先将String转换为Number类型。
- null == undefined 比较结果是true,除此之外,null、undefined和其他任何结果的比较值都为false。