==比较时候的相互转换规则

== 两边数据类型不同,要先转换为相同类型,然后再进行比较

@1 对象==字符串,将对象转为字符串(String([val]))有三步骤,具体看之前的笔记
@2 null == undefined -> true    null === undefined -> false    null/undefined和其他任何值不相等
@3 对象==对象,比较是地址值
@4 NaN !== NaN    Object.is(NaN, NaN) -> true
@5 除了以上情况,都是转为数字进行比较的

=== 绝对相等,如果类型不同,直接false,工作中使用这种

  // 要转为数字比较,用Number([]) -> 0 Number(false) -> 0
  console.log([] == false) // true
  // 先处理![],因为只有0/NaN/null/undefined/空字符串为false,所以![]为false
  console.log(![] == false) // true
  console.log(typeof undefined == typeof null) // false
  // 这里NULL是未定义的变量,typeof NULL -> 'undefined'
  console.log(typeof undefined == typeof NULL) // true
  // 'function' == 'function'
  console.log(typeof function () {} == typeof class {}) // true

你可能感兴趣的:(==比较时候的相互转换规则)