大厂面试题1 var =a ? if (a == 1 && a == 2 && a == 3) { console.log('ok') }

128 阅读1分钟

a为多少时下面if条件成立?

var a=?

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


分析如下

  • 要使得a==1 &&a==2 &&a==3
  • 那就是 第一次a==1 第二次a==2 第三次a==3

假设为数字,那么首先会调用valueof 其次tostring

那么问题就很简单了

  • 第一种 这么做

` var i = 0 var a = {

  // toString() {
  //   return ++i
  // }
  valueOf() {
    return ++i
  }
}
if (a == 1 && a == 2 && a == 3) {
  console.log('ok')
}

`

  • 第二种 object.defineProperty实现 ` var i = 0

    Object.defineProperty(window, 'a', { get() { return ++i; } })

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