Javascript (a==b&;a!==b)的计算结果是否为真?

Javascript (a==b&;a!==b)的计算结果是否为真?,javascript,ecmascript-6,Javascript,Ecmascript 6,有没有办法使(a==b&&a!==b)的计算结果为真 我以为答案是否定的,但我觉得这可能有个窍门。检查这个,它只适用于=而不适用于= var a={ x:1, toString:函数(){ 返回这个.x++; } } var b=1; log('Result',(a==b&&a!=b)); //另一种选择 变量j={ x:1, valueOf:函数(){ 返回这个.x++; } } var k=1; log('Result',(j==k&&j!=k))事实证明,它可以计算为true,但只有在与

有没有办法使(a==b&&a!==b)的计算结果为真


我以为答案是否定的,但我觉得这可能有个窍门。

检查这个,它只适用于
=
而不适用于
=

var a={
x:1,
toString:函数(){
返回这个.x++;
}
}
var b=1;
log('Result',(a==b&&a!=b));
//另一种选择
变量j={
x:1,
valueOf:函数(){
返回这个.x++;
}
}
var k=1;

log('Result',(j==k&&j!=k))事实证明,它可以计算为true,但只有在与一起使用时

with({
  get a() {
    return Math.floor(Math.random()*2);
  },
  get b() {
    return Math.floor(Math.random()*2);
  }
}){
  // 25% change of logging true
  console.log(a===b && a!==b);
}

用现实生活中的例子来解释它在哪里是必需的?他们让你陷入了类型强制的思维模式,但即使使用JS,这种说法也永远不会使
为真。用一些具体的类型来测试它。@Learnonhardway竞争条件如何,有没有办法使代码不同时执行,从而使其为假?或者这在JS中是不可能的?很可能你误解了这个问题,这是一个骗人的问题,或者面试官没有资格提出这个问题。我倾向于第三种选择。事实上,你可能应该问一个团队,这个团队在这样的问题上浪费了宝贵的面试时间。