青益云记

心若向阳,无畏伤悲

标题

「 [学习记录] JS 类型转换 - 隐式转换 」

青益   |  2023年01月08日 JS 类型转换 - 隐式转换强制转换也叫作显式转换隐式转换叫做自动类型转换简单规则介绍如果一个操作数是布尔值,那么在比较之前相等性之前...
内容

JS 类型转换 - 隐式转换

  • 强制转换也叫作显式转换
  • 隐式转换叫做自动类型转换
简单规则介绍
  1. 如果一个操作数是布尔值,那么在比较之前相等性之前 会将其转换成number类型

    例如:ture == 1

  2. 如果一个数是字符串,另一个操作数是数值,那么在比较时也会将这个字符串转换成数值 如果是一个不合法的数值则结果NaN 我们知道NaN和任何内容比较都不相等,包括自身 同时 如果在进行比较是 一个操作数是NaN 那么就会无视规则 直接返回false
  3. null == null 也会无视规则 直接返回TRUE
  4. undefined == undefined也会无视规则直接返回true
  5. null == undefined 也会无视规则直接返回TRUE
  6. NaN == NaN 也会无视规则直接返回false
  7. === 全等号在进行比较的时候 不会转换类型
  8. 如果一个操作数 是对象 另一个操作数不是对象 就会调用对象的tostring方法 用得到的基本值按照之前的规则去进行比较
  9. 如果两个操作数 都是对象 则去比较他们是否同一个对象 也就是引用地址是否是相同,如果不是相同,那么就会返回额FALSE 反之 true
例子
console.log("1"+true);   //结果为 1true

console.log(1+true);   //结果为 2

console.log(1+undefined); // 结果 NAN

console.log (1+null); //结果为 1 

console.log(true == 1); // true

简单来说就是,在比较运算过程中,基本数据类型会隐式转换,复杂数据类型不能隐式转换,但会使用toString()转成字符串,然后再进行隐式转换

js