【发布时间】:2014-10-31 21:19:25
【问题描述】:
我从考试题中得到了这个,但无法理解解决方案的工作原理。如果“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; -
@dfsq 他的问题是为了理解一个练习,而不是如何提高效率。
-
这里要知道的重要一点是,在 javascript 的条件表达式中(例如三元组的第一部分),独立的引用或文字被隐式转换为布尔值。然后三元更明确地读取
!! x ? y : !! y ? x : true;。这不是一个有效的相等测试,但您可以在此处看到:jsfiddle.net/7wamf2x9/1(返回类型既不是布尔值,也不是正确的结果)。
标签: javascript boolean logic