js中a + 1 < a等于true,(a ==1 && a== 2 && a==3) 等于 true如何实现

先说a + 1 < a

 1 const a = {
 2     i: 1,
 3     valueOf: () => {
 4         if (a.i === 1) {
 5             return a.i++;
 6         }
 7         return a.i+2;
 8     }
 9 }
10 console.log(a + 1 < a); // true

原理:valueOf第一次返回一个值,取过一次之后返回另一个值,这里用个变量判断也行,如下:

 1 let flag = true;
 2 const a = {
 3     i: 1,
 4     valueOf: () => {
 5         if (flag) {
 6             flag = false;
 7             return a.i;
 8         }
 9         return a.i+2;
10     }
11 }
12 console.log(a + 1 < a); // true

如果 a 加的数字小于 1,可以这么写

1 const a = {
2     i: 1,
3     valueOf: () => {
4         return a.i++;
5     }
6 }
7 console.log(a + 0.9 < a); // true

以上是a + 1 < a的解法


再说(a ==1 && a== 2 && a==3)等于true的实现,其实跟上面逻辑差不多,如下:

const a = {
    i: 1,
    valueOf: () => {
        return a.i++;
    }
}
console.log(a ==1 && a == 2 && a == 3); // true

 




posted @ 2019-06-21 16:51  极·简  Views(855)  Comments(0Edit  收藏  举报