在工作中我发现很多小伙伴对数据类型的转换都是一知半解的,更有甚者连js有哪些类型都说不明白。并且对这一块的知识嗤之以鼻,觉得用到时候百度就行,这种想法是十分危险的!你要是每次都百度也还好,顶多效率差点,就怕一知半解的生成各种各样的bug!
js类型
原始类型
- number 数字
- Boolean 布尔值
- string 字符串
- undefined 空
- null 空
- symbol 符号
- bigint 大整数
引用类型
- object 对象(包含了 Function Array Date 等等)
类型转换
首先我们要先明确这样一个前提。我们平时所说的类型转换都是为了将类型转为 number,Boolean,string,其中之一。(symbol,bigint 非直接定义的原始类型,所以这里说讲的类型转换不涉及这两个类型)
因此类型的转换其实就是这四种转换
- 引用类型 ==> 原始类型
- 全部类型 ==> Boolean
- 原始类型 ==> number
- 原始类型 ==> string
引用类型 ==> 原始类型
我们在做类型转换的时候 如果是引用类型
他会先转化为原始类型
再进行类型转换(转为Boolean 值的时候是没有这个逻辑的)。他的转换流程也很简单
调用valueOf ==> 得到的值如果是对象,则重新调用toString ==> 得到的还是对象则报错
const obj = {
valueOf:()=>{
return {}
},
toString:()=>{
return {}
},
}
console.log(String(obj)) //Uncaught TypeError: Cannot convert object to primitive value
console.log(String({})) //'[object Object]'
全部类型 ==> Boolean
这个是最常用的 一定要记住!除了 undefined null 数字零 空字符串 这四个情况都是true
类型 | 结果 |
---|---|
undefined | false |
null | false |
number | 0:false |
其他:true | |
string | 空字符串:false |
其他:true | |
对象 | true |
原始类型 ==> number
类型 | 结果 |
---|---|
undefined | NaN |
null | 0 |
boolean | true:1 |
false:0 | |
string | 空字符串(含空白字符):0 |
去掉引号不是数字就是NaN |
原始类型 ==> string
类型 | 结果 |
---|---|
undefined | "undefined" |
null | "null" |
boolean | true:"true" |
false:"false" | |
number | "数字" |
最后
欢迎继续观看下一篇 javascript基础 —— 运算规则 - 掘金 (juejin.cn)