关于javascript:面试题a在什么情况下if-a-1-a-2-a-3会打印值

题目:

let a = ???
if (a == 1 && a == 2 && a == 3) {
  console.log('Congratulations!');
}

开始看到这道题,我也是蒙的,狐疑这有可能实现吗?…
查阅材料发现能够通过Object原型有一个valueOf()办法

valueOf() 办法返回指定对象的原始值。

语法:
object.valueOf()
返回值

返回值为该对象的原始值。

javascript中调用valueOf()返回指定对象的原始值,通常咱们不须要去调用它。当遇到要预期到的原始值
的时候,javascript会本人调用valueOf()办法。然而,咱们能够通过重写valueOf办法,来达到咱们的目标。

实现:

let a = {
  val: 0,
  valueOf() {
    return ++obj.val
  }
}

if (a == 1 && a == 2 && a == 3) {
  console.log('Congratulations!');
}

总结:
其实咱们的最终目标就是,每次调用a的时候,有一个办法去拦挡并从新返回一个新的值。而javascipt原生反对的就是valueOf()办法。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理