javascript基础 —— 类型转换

74 阅读2分钟

在工作中我发现很多小伙伴对数据类型的转换都是一知半解的,更有甚者连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)