Skip to content

JavaScript的类型转换(显示、隐式转换) #105

Open
@GGXXMM

Description

@GGXXMM

类型转换

  • 显示类型转换
  • 隐式类型转换

1、显示类型转换

原始包装类显示转换

  • 转换布尔值:Boolean
  • 转换字符串:String
  • 转换数字:Number

内置函数显示转换

  • 转换字符串:toString
  • 转换整数:parseInt
  • 转换浮点数:parseFloat

2、隐式类型转换

1)字符串和数字转换:

  • + 操作符,如果有一个为字符串,那么都转化到字符串然后执行字符串拼接
// demo
's'+1 => 's1'
  • - 操作符,如果有一个为字符串、布尔值、null、undefined,先转为数字,再执行减法运算;
    如果有一个是对象则调用valueOf()取得其数值,再执行减法运算。
// demo
'1'-1 => 0

2)布尔值转换数字:

  • 1 + true = 2
  • 1 + false = 1

3)转换为布尔值:

  • if中的条件判断表达式
  • for语句的条件判断表达式(第二个)
  • while
  • 宽松相等和三目运算符
  • || (逻辑或) && (逻辑与)

4)对象转原始类型

  • 优先调用 Symbol. toPrimitive (可重写)
  • 需要转String类型,调用 toString
  • 需要转Number类型,调用 valueOf
  • 没有明确倾向,先调valueOf;未有结果调 toString
let obj = {
  valueOf() {
    return 0
  },
  toString() {
    return 'string'
  },
  [Symbol.toPrimitive]() {
    return 2
  }
}
1 + obj // => 3

假值列表

  • null
  • undefined
  • ''
  • false
  • 0
  • NaN

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

      Participants

      @GGXXMM

      Issue actions

        JavaScript的类型转换(显示、隐式转换) · Issue #105 · GGXXMM/fe-knowledge