小于和大于10

时间:2016-10-29 19:24:09

标签: javascript

我正在进行随机代码挑战,我无法弄清楚我的生活将如何实现这一目标

function(obj) {
   if ( (obj < 10) && (obj > 10) ) {
     return true;
   }
}

我尝试过的事情是设置一个间隔来将变量更改为0ms(最终成为浏览器默认值),使obj成为一个生命函数,每次使用时都会递增一个全局变量,并且一大堆其他看似不太有用的方法。这里有任何想法,或指出一些我不知道的明显缺失的东西吗?

1 个答案:

答案 0 :(得分:14)

线索在变量名称“obj”中。比较对象时,会调用它们的valueOf()方法。如果我们提供valueOf方法,每次都返回不同的值:

function test(obj) {
   if ( (obj < 10) && (obj > 10) ) {
     return true;
   }
}

var Obj = function() {
  var flag = false;
  
  this.valueOf = function() {
    if( flag ) {
      return 11;
    }

    flag = true;
    return 9;
  }
}

console.log( test( new Obj() ) );

上述对象的toValue在第一次调用时返回9(9 <10),从那时起返回11(11> 10)。