当前位置: 首页 > 面试题库 >

(a == 1 && a == 2 && a == 3)可以评估为真吗?

淳于坚壁
2023-03-14
问题内容

想要改善这篇文章吗? 提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。

主持人注意:
请不要编辑代码或删除此声明。空格模式可能是问题的一部分,因此不应不必要地对其进行篡改。如果您处于“空白无关紧要”的阵营中,则应该能够原样接受代码。

有可能用JavaScript (a== 1 && a ==2 && a==3)评估true吗?

这是一家大型科技公司提出的面试问题。它发生在两周前,但我仍在努力寻找答案。我知道我们从不在日常工作中编写此类代码,但我很好奇。


问题答案:

如果你趁如何==工作,你可以简单地创建一个自定义的对象toString(或valueOf改变它使用它,使得它满足所有这三个条件,每次返回)功能。

const a = {

  i: 1,

  toString: function () {

    return a.i++;

  }

}



if(a == 1 && a == 2 && a == 3) {

  console.log('Hello World!');

}

之所以起作用,是因为使用了松散的相等运算符。使用宽松相等时,如果其中一个操作数的类型不同于另一个,则引擎将尝试将一个转换为另一个。如果对象在左侧,数字在右侧,则它将尝试通过首先调用对象(valueOf如果可调用)将其转换为数字,否则将调用toStringtoString在这种情况下,我之所以使用它,仅仅是因为它浮现在脑海中,才valueOf更有意义。如果我改为从返回一个字符串toString,则引擎将尝试将该字符串转换为一个数字,使我们得到相同的最终结果,尽管路径略长。



 类似资料:
  • 问题内容: 我在该网站上遇到了这个问题,并在Eclipse中进行了尝试,但无法理解如何对其进行精确评估。 根据网站上的评论,x + = x * x * x ++解析为x = x +((x + 2)(x + 1) x),这是事实。我想我缺少有关此运算符优先级的信息。 问题答案: Java根据表达式的优先级从左到右计算表达式。 后缀递增运算符仅在使用/返回变量后递增该变量。一切似乎都是正确的。 这是后

  • 本文向大家介绍如何让(a==1 && a==2 && a==3)的值为true,把"=="换成"==="后还能为true吗?相关面试题,主要包含被问及如何让(a==1 && a==2 && a==3)的值为true,把"=="换成"==="后还能为true吗?时的应答技巧和注意事项,需要的朋友参考一下 好像是利用 的类型转换实现, 换成 不能为true

  • 问题内容: 如果我尝试这样做: 我得到以下输出: 演示:http://codepad.org/ncVuJtJu 这是为什么? 我希望将其作为输出: 我的理解: 但是为什么不输出呢? 问题答案: 所有解释为什么得到2而不是1的答案实际上都是错误的。根据PHP文档,混合并以这种方式是不确定的行为,所以你可以得到1或2切换到不同版本的PHP可能会改变你得到的结果,这将是一样有效。 请参阅示例1,其中显示

  • 本文向大家介绍 a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?相关面试题,主要包含被问及 a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?时的应答技巧和注意事项,需要的朋友参考一下 补充:    

  • 问题内容: : 1 < 2 < 3 true : 3 > 2 > 1 false … … : 3 > 2 && 2 > 1 true 也许我真的在考虑问题,但是我认为它们都会评估为真。为什么不呢? 问题答案: 因为评估为小于, 但评估为不大于

  • 类似于这个针对javascript的问题,它已经为各种不同的语言衍生出了许多副产品。我很好奇,在PHP中是否有以下情况: