fe-weekly-questions icon indicating copy to clipboard operation
fe-weekly-questions copied to clipboard

下面代码中的 a 在什么情况下会打印1?

Open LuckyWinty opened this issue 5 years ago • 5 comments

var a = ? if(a == 1 && a == 2 && a == 3){ console.log(1) }

LuckyWinty avatar Dec 12 '19 10:12 LuckyWinty

var a = {
 value: 0,
 valueOf(){
  return ++this.value
 }
}

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

LuckyWinty avatar Dec 12 '19 10:12 LuckyWinty

抖个机灵,这样不管下面条件怎么换,都会打印1

var a = (()=>console.log(1))();
if(a == 1 && a == 2 && a == 3){
console.log(1)
}

Luizzzzz avatar Dec 24 '19 01:12 Luizzzzz

var a = (()=>console.log(1))();
if(a == 1 && a == 2 && a == 3){
console.log(1)
}

你有没有写错哦。你这个打印1,是因为第一行的立即执行函数呀,跟下面的if里面的没啥关系吧

LuckyWinty avatar Dec 27 '19 04:12 LuckyWinty

var a = (()=>console.log(1))();
if(a == 1 && a == 2 && a == 3){
console.log(1)
}

你有没有写错哦。你这个打印1,是因为第一行的立即执行函数呀,跟下面的if里面的没啥关系吧

emmmm既然不能抖机灵,那就改善一下

var a = { valueOf: () => this.a = (this.a || 0) % 3 + 1};
if(a == 1 && a == 2 && a == 3){
 console.log(1)
}

这样不管几次if都会是1

Luizzzzz avatar Jan 20 '20 07:01 Luizzzzz

这简直太秀了 ==对比调取valueOf()吗? 有相应的官方文档吗?我想去仔细了解一下

berber1016 avatar Mar 01 '20 13:03 berber1016