Skip to content

如何让下面条件判断为真

题目代码如下:

js
let a = //待补充
if (a == 1 && a == 2 && a == 3) {
  console.log('success')
}

答案:

js
let a = {
  count: 1,
  valueOf() {
    return this.count++
  }
}

if (a == 1 && a == 2 && a == 3) {
  console.log('success')
}

JS红皮书第71页,介绍了“等于和不等于”,==!=这两个操作符会先进行类型转换(通常称为强制类型转换)再确定操作数是否相等。

其中一条转换规则如下:

  • 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法获得其原始值,再根据其他规则进行对比。

===全等和!==不全等操作符并不会进行类型转换。