Skip to content

等号运算符的运算和转换规则

Code

ts
// 如何让下面等式成立
if (a == 1 && a == 2 && a == 3) {
  console.log('不可能的等式成立了')
}

解析

ts
/**
 * 双等比较
 * 1. 有NAN返回false
 * 2. undefined 和 null 是相等的, 其他false
 * 3. 两端类型相同比较值
 * 4. 两端都是原始类型转换成数字比较
 * 5. 一端是原始类型,一端是对象,对象转原始类型
 *   5.1 toPrimitive
 *   5.2 valueOf
 *   5.3 toString
 */

var a = {
  i: 1,
  valueOf: function() {
    return this.i++;
  }
}