类型转换

Posted vant850

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类型转换相关的知识,希望对你有一定的参考价值。

显式转换

原始值 / 转换目标 布尔值 字符串 数字
Number 除 0, -0, NaN 都为 true 0 => "0" --
String 除空字符串外都为 true -- NaN / 数字
Boolean -- "true" / "false" true => 1
false => 0
Undefined False "undefined" NaN
null False "null" 0
Symbol True let sym = Symbol(1); => "Symbol(1)" 报错
函数 True function func(); => "function func()" NaN
数组 True [] => "" ; [1, 2] => "1, 2" 首先将数组转换成字符串, 再将字符串转为数字
对象 True "[object Object]" NaN

隐式类型转换

  1. 算数运算符 (+、-、*、/ 、++、--、%...)
    • ‘+‘作为一个双目运算符: 若 + 存在一个 字符串, 则将另一个值也转为 字符串 来进行字符串拼接。
    • 其他情况下都将参数转换为 数值 类型进行运算
  2. 关系运算符 (>、<、==、!、!= )
    • ===、!==: 同时比较类型和值。
    • ==、 !=:
      • 只比较值,不比较类型。 引用类型比较引用关系
      • 布尔值数字字符串比较时, 会将本身转换为数字在进行比较
      • NaN 不等于 NaN, Symbol 不等于 Symbol
    • ! : 将其后的变量会表达式转换为 布尔值
    • 字符串比较大小: 会从头开始比较每个字符的 unicode 编码,
    • 其余情况均转为数值类型

结尾小问题:

  1. 结合上面的内容 [] == [] 的输出结果是什么呢?

  2. 上面有提到 双目运算符, 那么在单目符中 var a = 1; a++ 是否== ++a 呢?

    评论区给你你答案 ????

以上是关于类型转换的主要内容,如果未能解决你的问题,请参考以下文章

C++ 介绍⁽⁴⁾|C++ 类型转换

JS强制类型转换,隐式类型转换, == 和===的区别

类型转换

C# 类型转换

C++ 数据类型转换

类型转换和类型断言