== 类型比较

在JS中 两等的比较方式,不比较类型。会强制进行类型转换后进行比较,记录各种类型比较的转换过程。

   /*
   * 数字 == 字符串 
   * 先将字符串转换为数字
   * 验证
   */
  console.log(121 == '121') // true
  console.log(Number('121') == 121) // true
  /**
   * 字符串 == 对象 
   * 对象会先调用toString转换为字符串
   * 对象统一转换为'[object Object]' 与字符串进行比较
   */
  console.log(Object.prototype.toString.call({})) // '[object Object]'
  console.log(Number('[object Object]') == 'NaN') // false NaN != NaN
  console.log('[object Object]' == {
    a: 1,
    b: 1,
    c: 1
  }) // true
  console.log('[object Object]' == {}) // true
  /**
   * null == undefined / undefined == null  // true
   */
  /**
   *  对象 == 对象 
   *  比较引用地址是否相同
   */
  let obja = {}
  objb = obja
  console.log({} == {}) // false
  console.log(obja == objb) // true
  /**
   * 对象 == boolean值
   * 两边都会转换为数值进行比较
   * 导致永远不会相等
   * 因为对象会先转换为字符串变成'[object Object]'然后在转变为数值则是NaN
   * 那么布尔值 只有 0 和 1 所以不可能相等
  */
    console.log({} == true) // false
  /**
   * 数字 == boolean值
   * 转为数字进行比较
  */
   console.log(1 == true) // true
   console.log(0 == false) // true
   console.log(NaN == false) // false
/**
  * 最奇怪的要数 NaN 自身和自身比较不相等
*/
console.log(NaN == NaN) // false 
console.log(NaN != NaN) // true
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容