面试题01 如何让:a == 1 && a == 2 && a == 3

104 阅读1分钟

方法一

const a = {
    value: [3, 2, 1],
    valueOf: function () {
        return this.value.pop();
    },
}
console.log(a == 1 && a == 2 && a == 3);

方法二

const a = [1, 2, 3];
a.join = a.shift;
console.log(a == 1 && a == 2 && a == 3);

方法三

const a=(function(){
    let i=1;
    return {
        valueOf:function(){
            return i++
        }
    }
})()
console.log(a == 1 && a == 2 && a == 3);

方法四

var a_ = 1;var a = 2;var _a = 3;
if(a_==1 && a== 2 &&_a==3) {    
   console.log('567890-')
} 

方法五

 const a = {
    value: [3, 2, 1],
    valueOf: function () {
        return this.value.pop();
    },
}
console.log(a == 1 && a == 2 && a == 3);

方法六

 var val = 1;
    Object.defineProperty(window, 'a', {
        get: function () {
            return val++;
        }
    });
    if (a == 1 && a == 2 && a == 3) {
        console.log('yay');
    }

方法七

 Object.defineProperty(this, 'a', {
    get: function () {
        return this.value = this.value ? (this.value += 1) : 1
    }
}) 
console.log(a === 1 && a === 2 && a === 3)

方法八

let _a= 1;Reflect.defineProperty(this, 'a', {    get() {        return _a++;    }});
console.log(a === 1 && a === 2 && a === 3);