写一个函数'或'没有'||'

时间:2017-08-29 10:45:52

标签: javascript function boolean operator-keyword

写一个函数'或'没有|| 给定2个布尔表达式,“或”返回true或false,对应于||运营商。 *应该使用!和&&

function or(expression1, expression2) {
  return !expression1 && expression1 && !expression2 && expression1
}

我已经尝试过了,但与此同时我对这个问题究竟是什么感到困惑

预期产出:

var output = or(true, false);
console.log(output); // --> true;

4 个答案:

答案 0 :(得分:4)

使用De Morgan's laws进行一些基本考虑:

!(a && b) = !a || !b 
!(a || b) = !a && !b

function or(a, b) {
    return !(!a && !b);
}

console.log(or(false, false)); // false
console.log(or(false, true));  // true
console.log(or(true, false));  // true
console.log(or(true, true));   // true

答案 1 :(得分:2)

这是工作解决方案

function or(a, b){
if(!a && !b) 
	return false
return true;
}

console.log(or(true, true));
console.log(or(true, false));
console.log(or(false, true));
console.log(or(false, false));

希望这会有所帮助!!

答案 2 :(得分:0)

他们要求您展示的概念是称为NAND或非AND

NAND是电子学中最常见的逻辑运算符类型,可用于表示所有其他逻辑。

您可以在此处找到您应该建模的内容:https://en.wikipedia.org/wiki/NAND_logic#OR

答案 3 :(得分:0)

您的实施:

   return !a && b && !a && b  

对于truefalse,评估为:

   return !true && true && !false && false;

   return false && true && true && false;

由于延迟评估,它甚至不会在第一个false &&之后评估任何内容,因为false && x为假,无论x的值是多少。对于任何输入,其中一个术语是false,因此它将始终返回false。

如果你把它分成更小的部分可能会有所帮助:

 boolean bothFalse = !a && !b
 boolean notBothFalse = !bothFalse;
 return notBothFalse;

但是使用括号(),您可以在一行中表达这一点。我会留下这个练习给你。