Skip to content

类型

基本类型

基本类型的值都是存放在栈内存中的,变量之间的赋值都是通过拷贝进行的,此后两个变量再参与任何操作的时候都不会相互影响

  • Number
  • String
  • Boolean
  • Undefined:声明但未定义的变量
  • Null:空指针对象
  • Symbol:独一无二的值,使用Symbol()创建
  • bigInt:用于当整数值大于Number数据类型支持的范围时

引用类型

引用类型的值都是存放在堆内存中的,变量之间的赋值都是通过复制引用进行的,由此延申出浅复制和深复制概念

类型转换

  • 转换为boolean:判断时,除此部分值外,全部转换为true

    • null
    • undefined
    • ""
    • NaN
    • -0
    • +0
  • 对象转换为基本类型:顺序触发对象的方法获取返回值作为基本类型

    • Symbol.toPrimitive
    • valueOf
    • toString
  • 四则运算转换规则

    • 加法:有字符串类型,其他类型自动转换为字符串类型
    • 其他运算法:转换为数值进行计算
  • ==比较

    • 通常比较结果跟我们的认知一样,只有几个特殊的结果
    • NaN == NaN => false
    • undefined == null => true
    • 字符串和数值比较会先把字符串转换为数值类型
    • 布尔值和数值比较会先把布尔值转换为数值类型
    • 有对象类型的值则将其转换为基础类型

判断类型的方式

  • typeOf:只能判断基本类型,不能判断引用类型
  • Object.prototype.toString.call()
  • instenceOf
  • Array.isArray()