javascript - boolean 相等

标签 javascript boolean logic

我是从一道考试题中得出这个答案的,但无法理解该解决方案的工作原理。如果值“x”和“y”相等,则此函数应该返回“true”,否则返回 False。

解决方法:

function equal_boolean (x , y) {
  return x ? y : y ? x : true;
}

为什么会这样?据我所知,结果是评估 X 是否为真。如果 X 为真,它将返回 Y。X 应该如何为“真”?

如果不是,它将评估 Y 是否为真,如果为真,则返回 X,如果不是,则返回 True。

我的理解有问题吗?

最佳答案

return x ? y : y ? x : true;

解析为

if x
   return y       // if y is true, then x == y. if y is false, then x != y
else (x is false)
   if y
      return x    // x is false and y is true, y != x, return false
   else
      return true // x is false and y is false, return true

这当然是一种非常复杂的表达 boolean 相等性的方式(又名 Logical biconditional 又名 iff)。更自然的是这样的表达:

 (x && y) || (!x && !y)

关于javascript - boolean 相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25710972/

相关文章:

Javascript:href按钮模拟点击

java - 等到 boolean 值改变它的状态

c++ - 为什么用三元运算符来定义宏中的 1 和 0?

javascript - 使用 .target.innerHTML 时我的输入总是返回 0

arrays - 用不同维度的项目填充包的算法逻辑

javascript - 为什么 .on() 可以工作但 .listenTo() 失败?

javascript - 如何遍历一年中的剩余日子并在 javascript 中查找某些日期?

javascript - Windows 商店应用程序 - 打印特定的 div

data-structures - 如何为 Bitvector 实现自定义切片

javascript - 如何继续循环直到我的变量等于用户输入? JavaScript